414 lines
15 KiB
C#
414 lines
15 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
using CodeStage.AntiCheat.ObscuredTypes;
|
|
using Cpp2IlInjected;
|
|
using RecNet;
|
|
using RecRoom.Async;
|
|
using UnityEngine;
|
|
|
|
namespace RRUI.Data
|
|
{
|
|
// Token: 0x02000AE5 RID: 2789
|
|
[Token(Token = "0x2000AE5")]
|
|
[StructLayout(3)]
|
|
public class InventionListModel : FilterableListModel<long, OBBBPCBIMME>
|
|
{
|
|
// Token: 0x17000C71 RID: 3185
|
|
// (get) Token: 0x06004619 RID: 17945 RVA: 0x0010D428 File Offset: 0x0010B628
|
|
[Token(Token = "0x17000C71")]
|
|
protected override bool PHGOLNMDJLH
|
|
{
|
|
[Token(Token = "0x6004619")]
|
|
[Address(RVA = "0x4405A0", Offset = "0x43EFA0", VA = "0x1804405A0", Slot = "11")]
|
|
get
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000C72 RID: 3186
|
|
// (get) Token: 0x0600461A RID: 17946 RVA: 0x0010D438 File Offset: 0x0010B638
|
|
// (set) Token: 0x0600461B RID: 17947 RVA: 0x0010D44C File Offset: 0x0010B64C
|
|
[Token(Token = "0x17000C72")]
|
|
public InventionListModel.DEEJFPHCCPF PDOJHGJMNPH
|
|
{
|
|
[Token(Token = "0x600461A")]
|
|
[Address(RVA = "0x3D30C0", Offset = "0x3D1AC0", VA = "0x1803D30C0")]
|
|
get
|
|
{
|
|
return this.source;
|
|
}
|
|
[Token(Token = "0x600461B")]
|
|
[Address(RVA = "0x1878A90", Offset = "0x1877490", VA = "0x181878A90")]
|
|
set
|
|
{
|
|
if (this.source != value)
|
|
{
|
|
this.source = value;
|
|
this.GOEPJAHFDCA();
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000C73 RID: 3187
|
|
// (get) Token: 0x0600461C RID: 17948 RVA: 0x0010D47C File Offset: 0x0010B67C
|
|
// (set) Token: 0x0600461D RID: 17949 RVA: 0x0010D490 File Offset: 0x0010B690
|
|
[Token(Token = "0x17000C73")]
|
|
public InventionsConfig.IJEBAJLMDGP OCPOEHIEKIN
|
|
{
|
|
[Token(Token = "0x600461C")]
|
|
[Address(RVA = "0x3D30A0", Offset = "0x3D1AA0", VA = "0x1803D30A0")]
|
|
get
|
|
{
|
|
return this.sortCriteria;
|
|
}
|
|
[Token(Token = "0x600461D")]
|
|
[Address(RVA = "0x1878A20", Offset = "0x1877420", VA = "0x181878A20")]
|
|
set
|
|
{
|
|
if (this.sortCriteria != value)
|
|
{
|
|
this.sortCriteria = value;
|
|
base.ACHCNJEMIBA();
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000C74 RID: 3188
|
|
// (get) Token: 0x0600461E RID: 17950 RVA: 0x0010D4C0 File Offset: 0x0010B6C0
|
|
// (set) Token: 0x0600461F RID: 17951 RVA: 0x0010D4D4 File Offset: 0x0010B6D4
|
|
[Token(Token = "0x17000C74")]
|
|
public int BADIGBCKECA
|
|
{
|
|
[Token(Token = "0x600461E")]
|
|
[Address(RVA = "0xA01680", Offset = "0xA00080", VA = "0x180A01680")]
|
|
get
|
|
{
|
|
return this.BIAFOBPIBDB;
|
|
}
|
|
[Token(Token = "0x600461F")]
|
|
[Address(RVA = "0x1878940", Offset = "0x1877340", VA = "0x181878940")]
|
|
set
|
|
{
|
|
if (this.BIAFOBPIBDB != value)
|
|
{
|
|
this.BIAFOBPIBDB = value;
|
|
base.ACHCNJEMIBA();
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000C75 RID: 3189
|
|
// (get) Token: 0x06004620 RID: 17952 RVA: 0x0010D500 File Offset: 0x0010B700
|
|
// (set) Token: 0x06004621 RID: 17953 RVA: 0x0010D514 File Offset: 0x0010B714
|
|
[Token(Token = "0x17000C75")]
|
|
public long DADOKMAOFJL
|
|
{
|
|
[Token(Token = "0x6004620")]
|
|
[Address(RVA = "0x3E2C60", Offset = "0x3E1660", VA = "0x1803E2C60")]
|
|
get
|
|
{
|
|
return this.HNHLJONGKHB;
|
|
}
|
|
[Token(Token = "0x6004621")]
|
|
[Address(RVA = "0x18789B0", Offset = "0x18773B0", VA = "0x1818789B0")]
|
|
set
|
|
{
|
|
if (this.HNHLJONGKHB != value)
|
|
{
|
|
this.HNHLJONGKHB = value;
|
|
base.ACHCNJEMIBA();
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06004622 RID: 17954 RVA: 0x0010D540 File Offset: 0x0010B740
|
|
[Token(Token = "0x6004622")]
|
|
[Address(RVA = "0x1877670", Offset = "0x1876070", VA = "0x181877670", Slot = "14")]
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
InventionsConfig.IJEBAJLMDGP ijebajlmdgp = this.sortCriteria;
|
|
this.CDNCOAAGDHO = ijebajlmdgp;
|
|
int num;
|
|
FilterableListModel<long, OBBBPCBIMME>.DGNMHHNFDCG dgnmhhnfdcg = new FilterableListModel.DGNMHHNFDCG(num.FOOEBPEIBKH);
|
|
num = 0;
|
|
base.CGGDDKNENAP(true, dgnmhhnfdcg);
|
|
FilterableListModel<long, OBBBPCBIMME>.EGFBIIBKEPL egfbiibkepl = new FilterableListModel.EGFBIIBKEPL(this.MIJIJBLBEEP);
|
|
base.DHBAJGIIFEI(true, egfbiibkepl);
|
|
this.GOEPJAHFDCA();
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
Action action = new Action(this.DDMHMEDIEMG);
|
|
Action action2 = new Action(this.DDMHMEDIEMG);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06004623 RID: 17955 RVA: 0x0010D5BC File Offset: 0x0010B7BC
|
|
[Token(Token = "0x6004623")]
|
|
[Address(RVA = "0x1878890", Offset = "0x1877290", VA = "0x181878890", Slot = "9")]
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
}
|
|
|
|
// Token: 0x06004624 RID: 17956 RVA: 0x0010D5D8 File Offset: 0x0010B7D8
|
|
[Token(Token = "0x6004624")]
|
|
[Address(RVA = "0x1878670", Offset = "0x1877070", VA = "0x181878670", Slot = "15")]
|
|
protected override void OnDestroy()
|
|
{
|
|
base.OnDestroy();
|
|
Action action = new Action(this.DDMHMEDIEMG);
|
|
Action action2 = new Action(this.DDMHMEDIEMG);
|
|
}
|
|
|
|
// Token: 0x06004625 RID: 17957 RVA: 0x0010D60C File Offset: 0x0010B80C
|
|
[Token(Token = "0x6004625")]
|
|
[Address(RVA = "0x1877860", Offset = "0x1876260", VA = "0x181877860")]
|
|
private void DDMHMEDIEMG()
|
|
{
|
|
if (this.source == InventionListModel.DEEJFPHCCPF.Room)
|
|
{
|
|
long hnhljongkhb = this.HNHLJONGKHB;
|
|
CIIBGMBOFEI ciibgmbofei = Matchmaking.BBJAEJHMAPB;
|
|
if (hnhljongkhb == ciibgmbofei.<DOFDAMHCJLP>k__BackingField)
|
|
{
|
|
BBHENFCNLAB.KJMGMEKAEFF(this.HNHLJONGKHB);
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06004626 RID: 17958 RVA: 0x0010D654 File Offset: 0x0010B854
|
|
[Token(Token = "0x6004626")]
|
|
[Address(RVA = "0x1878770", Offset = "0x1877170", VA = "0x181878770")]
|
|
public void Set(InventionListModel.DEEJFPHCCPF? DIEPOPNJNCO, int? BIAFOBPIBDB)
|
|
{
|
|
base.Clear();
|
|
base.ACHCNJEMIBA();
|
|
int num = 0;
|
|
base.MKBLJJGJAOH(num);
|
|
this.GOEPJAHFDCA();
|
|
int num2 = 0;
|
|
base.MKBLJJGJAOH(num2);
|
|
int num3 = 0;
|
|
base.MKBLJJGJAOH(num3);
|
|
}
|
|
|
|
// Token: 0x06004627 RID: 17959 RVA: 0x0010D690 File Offset: 0x0010B890
|
|
[Token(Token = "0x6004627")]
|
|
[Address(RVA = "0x1877620", Offset = "0x1876020", VA = "0x181877620", Slot = "19")]
|
|
protected override void AHFKACICJNC()
|
|
{
|
|
base.AHFKACICJNC();
|
|
InventionsConfig.IJEBAJLMDGP cdncoaagdho = this.CDNCOAAGDHO;
|
|
this.sortCriteria = cdncoaagdho;
|
|
}
|
|
|
|
// Token: 0x06004628 RID: 17960 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6004628")]
|
|
[Address(RVA = "0x1877AE0", Offset = "0x18764E0", VA = "0x181877AE0", Slot = "34")]
|
|
protected override IPromise<IReadOnlyList<OBBBPCBIMME>> JLMBBMAEFPA()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06004629 RID: 17961 RVA: 0x0010D6B4 File Offset: 0x0010B8B4
|
|
[Token(Token = "0x6004629")]
|
|
[Address(RVA = "0x74D670", Offset = "0x74C070", VA = "0x18074D670", Slot = "33")]
|
|
protected override long EAJAHMHILAC(OBBBPCBIMME LDNFNNNHPPB)
|
|
{
|
|
return LDNFNNNHPPB.<BHBCCAKKIMJ>k__BackingField;
|
|
}
|
|
|
|
// Token: 0x0600462A RID: 17962 RVA: 0x0010D6D0 File Offset: 0x0010B8D0
|
|
[Token(Token = "0x600462A")]
|
|
[Address(RVA = "0x1877930", Offset = "0x1876330", VA = "0x181877930")]
|
|
private static bool FOOEBPEIBKH(string LMAJKCLDDIF, OBBBPCBIMME LDNFNNNHPPB)
|
|
{
|
|
return LDNFNNNHPPB.<LGACIEKBLBM>k__BackingField.ToLowerInvariant().Contains(LMAJKCLDDIF);
|
|
}
|
|
|
|
// Token: 0x0600462B RID: 17963 RVA: 0x0010D6F4 File Offset: 0x0010B8F4
|
|
[Token(Token = "0x600462B")]
|
|
[Address(RVA = "0x1877A20", Offset = "0x1876420", VA = "0x181877A20")]
|
|
private void GOEPJAHFDCA()
|
|
{
|
|
if (this.source != InventionListModel.DEEJFPHCCPF.ServerSearch)
|
|
{
|
|
int num;
|
|
FilterableListModel<long, OBBBPCBIMME>.KPMONDBJJGG.PJIFAODKOEP pjifaodkoep = new FilterableListModel.KPMONDBJJGG.PJIFAODKOEP(num.GMEECOJFDDD);
|
|
num = 0;
|
|
int num2;
|
|
FilterableListModel<long, OBBBPCBIMME>.KPMONDBJJGG kpmondbjjgg = new FilterableListModel.KPMONDBJJGG(pjifaodkoep, num2);
|
|
num2 = 0;
|
|
base.HCIIGEOGCMF(true, kpmondbjjgg);
|
|
return;
|
|
}
|
|
base.DJCMEOKMKAF(true);
|
|
}
|
|
|
|
// Token: 0x0600462C RID: 17964 RVA: 0x0010D734 File Offset: 0x0010B934
|
|
[Token(Token = "0x600462C")]
|
|
[Address(RVA = "0x1877970", Offset = "0x1876370", VA = "0x181877970")]
|
|
private static string[] GMEECOJFDDD(OBBBPCBIMME LDNFNNNHPPB)
|
|
{
|
|
string[] array = new string[1];
|
|
string <LGACIEKBLBM>k__BackingField = LDNFNNNHPPB.<LGACIEKBLBM>k__BackingField;
|
|
if (<LGACIEKBLBM>k__BackingField != 0)
|
|
{
|
|
}
|
|
array[0] = <LGACIEKBLBM>k__BackingField;
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x0600462D RID: 17965 RVA: 0x0010D764 File Offset: 0x0010B964
|
|
[Token(Token = "0x600462D")]
|
|
[Address(RVA = "0x1878040", Offset = "0x1876A40", VA = "0x181878040")]
|
|
private IPromise<IEnumerable<OBBBPCBIMME>> MIJIJBLBEEP(IEnumerable<OBBBPCBIMME> BOOHBJEEGKH)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600462D)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling RecRoom.Async.IPromise`1<System.Collections.Generic.IEnumerable`1<OBBBPCBIMME>> RRUI.Data.InventionListModel::MIJIJBLBEEP(System.Collections.Generic.IEnumerable`1<OBBBPCBIMME>)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_148:
|
|
stloc:ArgumentOutOfRangeException(var_11_14D, newobj:ArgumentOutOfRangeException(ArgumentOutOfRangeException::.ctor))
|
|
}
|
|
|
|
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.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: 0x0600462E RID: 17966 RVA: 0x0010D8C0 File Offset: 0x0010BAC0
|
|
[Token(Token = "0x600462E")]
|
|
[Address(RVA = "0x18788E0", Offset = "0x18772E0", VA = "0x1818788E0")]
|
|
public InventionListModel()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003612 RID: 13842
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x108")]
|
|
[Token(Token = "0x4003612")]
|
|
[SerializeField]
|
|
private InventionsConfig.IJEBAJLMDGP sortCriteria;
|
|
|
|
// Token: 0x04003613 RID: 13843
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10C")]
|
|
[Token(Token = "0x4003613")]
|
|
[SerializeField]
|
|
private InventionListModel.DEEJFPHCCPF source = (InventionListModel.DEEJFPHCCPF)((ulong)2L);
|
|
|
|
// Token: 0x04003614 RID: 13844
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x110")]
|
|
[Token(Token = "0x4003614")]
|
|
private InventionsConfig.IJEBAJLMDGP CDNCOAAGDHO;
|
|
|
|
// Token: 0x04003615 RID: 13845
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x114")]
|
|
[Token(Token = "0x4003615")]
|
|
private int BIAFOBPIBDB = (int)((ulong)4294967295L);
|
|
|
|
// Token: 0x04003616 RID: 13846
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x118")]
|
|
[Token(Token = "0x4003616")]
|
|
private long HNHLJONGKHB = (long)((ulong)(-1L));
|
|
|
|
// Token: 0x02000AE6 RID: 2790
|
|
[Token(Token = "0x2000AE6")]
|
|
public enum DEEJFPHCCPF
|
|
{
|
|
// Token: 0x04003618 RID: 13848
|
|
[Token(Token = "0x4003618")]
|
|
ServerSearch,
|
|
// Token: 0x04003619 RID: 13849
|
|
[Token(Token = "0x4003619")]
|
|
PlayerCreatedInventions,
|
|
// Token: 0x0400361A RID: 13850
|
|
[Token(Token = "0x400361A")]
|
|
None,
|
|
// Token: 0x0400361B RID: 13851
|
|
[Token(Token = "0x400361B")]
|
|
Room
|
|
}
|
|
|
|
// Token: 0x02000AE7 RID: 2791
|
|
[Token(Token = "0x2000AE7")]
|
|
[CompilerGenerated]
|
|
private sealed class HOJFICFGHNF
|
|
{
|
|
// Token: 0x0600462F RID: 17967 RVA: 0x0010D8F8 File Offset: 0x0010BAF8
|
|
[Token(Token = "0x600462F")]
|
|
[Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")]
|
|
public HOJFICFGHNF()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06004630 RID: 17968 RVA: 0x0010D90C File Offset: 0x0010BB0C
|
|
[Token(Token = "0x6004630")]
|
|
[Address(RVA = "0x1874310", Offset = "0x1872D10", VA = "0x181874310")]
|
|
internal List<OBBBPCBIMME> <RefreshCacheInternal>b__0(List<OBBBPCBIMME> results)
|
|
{
|
|
Func<OBBBPCBIMME, bool> func = this.<>9__3;
|
|
if (func == 0)
|
|
{
|
|
Func<OBBBPCBIMME, bool> func2 = delegate(OBBBPCBIMME x)
|
|
{
|
|
int <KBFNGJBKEOP>k__BackingField = x.<KBFNGJBKEOP>k__BackingField;
|
|
int num = ObscuredInt.FAJDMKOEFLH(this.localAccountId);
|
|
return <KBFNGJBKEOP>k__BackingField == num;
|
|
};
|
|
this.<>9__3 = func2;
|
|
}
|
|
return Enumerable.ToList<OBBBPCBIMME>(Enumerable.Where<OBBBPCBIMME>(results, func));
|
|
}
|
|
|
|
// Token: 0x06004631 RID: 17969 RVA: 0x0010D944 File Offset: 0x0010BB44
|
|
[Token(Token = "0x6004631")]
|
|
[Address(RVA = "0x18743B0", Offset = "0x1872DB0", VA = "0x1818743B0")]
|
|
internal bool <RefreshCacheInternal>b__3(OBBBPCBIMME x)
|
|
{
|
|
int <KBFNGJBKEOP>k__BackingField = x.<KBFNGJBKEOP>k__BackingField;
|
|
int num = ObscuredInt.FAJDMKOEFLH(this.localAccountId);
|
|
return <KBFNGJBKEOP>k__BackingField == num;
|
|
}
|
|
|
|
// Token: 0x0400361C RID: 13852
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x400361C")]
|
|
public ObscuredInt localAccountId;
|
|
|
|
// Token: 0x0400361D RID: 13853
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x400361D")]
|
|
public Func<OBBBPCBIMME, bool> <>9__3;
|
|
}
|
|
}
|
|
}
|