Files
Jan2021-Cpp2Il-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Asn1/X509/Holder.cs
T
2026-04-08 23:40:05 +02:00

294 lines
18 KiB
C#

using System;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509
{
// Token: 0x0200182A RID: 6186
[Token(Token = "0x200182A")]
[StructLayout(3)]
public class Holder : Asn1Encodable
{
// Token: 0x0600A6BB RID: 42683 RVA: 0x0026C6F8 File Offset: 0x0026A8F8
[Token(Token = "0x600A6BB")]
[Address(RVA = "0x2B073E0", Offset = "0x2B05DE0", VA = "0x182B073E0")]
public static Holder GetInstance(object obj)
{
/*
An exception occurred when decompiling this method (0600A6BB)
ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509.Holder BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509.Holder::GetInstance(System.Object)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_74:
stloc:string(var_13_7A, call:string(Platform::GetTypeName, ldloc:object(obj)))
stloc:ArgumentException(var_14_92, newobj:ArgumentException(ArgumentException::.ctor, call:string(string::Concat, ldstr:string("unknown object in factory: "), ldloc:string(var_13_7A)), ldstr:string("obj")))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
*/;
}
// Token: 0x0600A6BC RID: 42684 RVA: 0x0026C798 File Offset: 0x0026A998
[Token(Token = "0x600A6BC")]
[Address(RVA = "0x2B07B20", Offset = "0x2B06520", VA = "0x182B07B20")]
public Holder(Asn1TaggedObject tagObj)
{
/*
An exception occurred when decompiling this method (0600A6BC)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509.Holder::.ctor(BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Asn1TaggedObject)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_5D:
stloc:ArgumentException(var_5_67, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("unknown tag in Holder")))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
*/;
}
// Token: 0x0600A6BD RID: 42685 RVA: 0x0026C810 File Offset: 0x0026AA10
[Token(Token = "0x600A6BD")]
[Address(RVA = "0x2B07C40", Offset = "0x2B06640", VA = "0x182B07C40")]
private Holder(Asn1Sequence seq)
{
/*
An exception occurred when decompiling this method (0600A6BD)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509.Holder::.ctor(BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Asn1Sequence)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_9B:
stloc:ArgumentException(var_12_A5, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("unknown tag in Holder")))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
*/;
}
// Token: 0x0600A6BE RID: 42686 RVA: 0x0026C8C4 File Offset: 0x0026AAC4
[Token(Token = "0x600A6BE")]
[Address(RVA = "0x2B07A80", Offset = "0x2B06480", VA = "0x182B07A80")]
public Holder(IssuerSerial baseCertificateID)
{
this.baseCertificateID = baseCertificateID;
this.version = (int)((ulong)1L);
}
// Token: 0x0600A6BF RID: 42687 RVA: 0x0026C8E8 File Offset: 0x0026AAE8
[Token(Token = "0x600A6BF")]
[Address(RVA = "0x2B07C00", Offset = "0x2B06600", VA = "0x182B07C00")]
public Holder(IssuerSerial baseCertificateID, int version)
{
this.baseCertificateID = baseCertificateID;
this.version = version;
}
// Token: 0x17001A0E RID: 6670
// (get) Token: 0x0600A6C0 RID: 42688 RVA: 0x0026C90C File Offset: 0x0026AB0C
[Token(Token = "0x17001A0E")]
public int Version
{
[Token(Token = "0x600A6C0")]
[Address(RVA = "0x4D24F0", Offset = "0x4D0EF0", VA = "0x1804D24F0")]
get
{
return this.version;
}
}
// Token: 0x0600A6C1 RID: 42689 RVA: 0x0026C920 File Offset: 0x0026AB20
[Token(Token = "0x600A6C1")]
[Address(RVA = "0x2B07AF0", Offset = "0x2B064F0", VA = "0x182B07AF0")]
public Holder(GeneralNames entityName)
{
this.entityName = entityName;
this.version = (int)((ulong)1L);
}
// Token: 0x0600A6C2 RID: 42690 RVA: 0x0026C944 File Offset: 0x0026AB44
[Token(Token = "0x600A6C2")]
[Address(RVA = "0x2B07AB0", Offset = "0x2B064B0", VA = "0x182B07AB0")]
public Holder(GeneralNames entityName, int version)
{
this.entityName = entityName;
this.version = version;
}
// Token: 0x0600A6C3 RID: 42691 RVA: 0x0026C968 File Offset: 0x0026AB68
[Token(Token = "0x600A6C3")]
[Address(RVA = "0x2B07E30", Offset = "0x2B06830", VA = "0x182B07E30")]
public Holder(ObjectDigestInfo objectDigestInfo)
{
this.objectDigestInfo = objectDigestInfo;
this.version = (int)((ulong)1L);
}
// Token: 0x17001A0F RID: 6671
// (get) Token: 0x0600A6C4 RID: 42692 RVA: 0x0026C98C File Offset: 0x0026AB8C
[Token(Token = "0x17001A0F")]
public IssuerSerial BaseCertificateID
{
[Token(Token = "0x600A6C4")]
[Address(RVA = "0x3C39A0", Offset = "0x3C23A0", VA = "0x1803C39A0")]
get
{
return this.baseCertificateID;
}
}
// Token: 0x17001A10 RID: 6672
// (get) Token: 0x0600A6C5 RID: 42693 RVA: 0x0026C9A0 File Offset: 0x0026ABA0
[Token(Token = "0x17001A10")]
public GeneralNames EntityName
{
[Token(Token = "0x600A6C5")]
[Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240")]
get
{
return this.entityName;
}
}
// Token: 0x17001A11 RID: 6673
// (get) Token: 0x0600A6C6 RID: 42694 RVA: 0x0026C9B4 File Offset: 0x0026ABB4
[Token(Token = "0x17001A11")]
public ObjectDigestInfo ObjectDigestInfo
{
[Token(Token = "0x600A6C6")]
[Address(RVA = "0x3C1220", Offset = "0x3BFC20", VA = "0x1803C1220")]
get
{
return this.objectDigestInfo;
}
}
// Token: 0x0600A6C7 RID: 42695 RVA: 0x0026C9C8 File Offset: 0x0026ABC8
[Token(Token = "0x600A6C7")]
[Address(RVA = "0x2B07730", Offset = "0x2B06130", VA = "0x182B07730", Slot = "5")]
public override Asn1Object ToAsn1Object()
{
if (this.version != 1)
{
GeneralNames generalNames = this.entityName;
if (generalNames == 0)
{
IssuerSerial issuerSerial = this.baseCertificateID;
int num;
int num2;
DerTaggedObject derTaggedObject = new DerTaggedObject(num != 0, num2, issuerSerial);
num2 = 0;
num = 0;
}
int num3;
DerTaggedObject derTaggedObject2 = new DerTaggedObject(num3 != 0, 1, generalNames);
num3 = 0;
}
Asn1EncodableVector asn1EncodableVector;
if (this.baseCertificateID != (ulong)0L)
{
Asn1Encodable[] array = new Asn1Encodable[1];
IssuerSerial issuerSerial2 = this.baseCertificateID;
int num4;
int num5;
DerTaggedObject derTaggedObject3 = new DerTaggedObject(num4 != 0, num5, issuerSerial2);
num5 = 0;
num4 = 0;
if (derTaggedObject3 != 0)
{
}
array[0] = derTaggedObject3;
asn1EncodableVector.Add(array);
}
if (this.entityName != (ulong)0L)
{
Asn1Encodable[] array2 = new Asn1Encodable[1];
GeneralNames generalNames2 = this.entityName;
int num6;
DerTaggedObject derTaggedObject4 = new DerTaggedObject(num6 != 0, 1, generalNames2);
num6 = 0;
if (derTaggedObject4 != 0)
{
}
array2[0] = derTaggedObject4;
asn1EncodableVector.Add(array2);
}
if (this.objectDigestInfo != (ulong)0L)
{
Asn1Encodable[] array3 = new Asn1Encodable[1];
ObjectDigestInfo objectDigestInfo = this.objectDigestInfo;
int num7;
DerTaggedObject derTaggedObject5 = new DerTaggedObject(num7 != 0, 2, objectDigestInfo);
num7 = 0;
if (derTaggedObject5 != 0)
{
}
array3[0] = derTaggedObject5;
asn1EncodableVector.Add(array3);
}
DerSequence derSequence = new DerSequence(asn1EncodableVector);
throw new NullReferenceException();
}
// Token: 0x04006C63 RID: 27747
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006C63")]
internal readonly IssuerSerial baseCertificateID;
// Token: 0x04006C64 RID: 27748
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
[Token(Token = "0x4006C64")]
internal readonly GeneralNames entityName;
// Token: 0x04006C65 RID: 27749
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
[Token(Token = "0x4006C65")]
internal readonly ObjectDigestInfo objectDigestInfo;
// Token: 0x04006C66 RID: 27750
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
[Token(Token = "0x4006C66")]
private readonly int version;
}
}