Files
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

434 lines
17 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
using Photon.Pun;
using RecRoom.Core.AI;
using RecRoom.Core.Combat;
using RecRoom.Core.Pools;
using UnityEngine;
namespace RecRoom.Tools.Weapons
{
// Token: 0x02002C54 RID: 11348
[Token(Token = "0x2002C54")]
public class ExplosiveRangedWeapon : RangedWeapon
{
// Token: 0x06012F5C RID: 77660 RVA: 0x00453ED4 File Offset: 0x004520D4
[Token(Token = "0x6012F5C")]
[Address(RVA = "0x1D30B70", Offset = "0x1D2FB70", VA = "0x181D30B70", Slot = "13")]
protected override void Awake()
{
base.Awake();
EMPJPPLIPMG.HCEABLFOLPA hceablfolpa;
this.OEJMNKBJCHC.BEKCCHHMPEH += hceablfolpa;
EMPJPPLIPMG.EKKCNCNMEOB ekkcncnmeob;
this.OEJMNKBJCHC.EIMFCMEGGPP += ekkcncnmeob;
EMPJPPLIPMG.KNGHDKHHMIK knghdkhhmik;
this.OEJMNKBJCHC.KBMHDAGMLAF += knghdkhhmik;
EMPJPPLIPMG.HPBJOLBAKDB hpbjolbakdb;
this.OEJMNKBJCHC.JMKEOLOEKFM += hpbjolbakdb;
}
// Token: 0x06012F5D RID: 77661 RVA: 0x00453F20 File Offset: 0x00452120
[Token(Token = "0x6012F5D")]
[Address(RVA = "0x1D31BC0", Offset = "0x1D30BC0", VA = "0x181D31BC0", Slot = "14")]
protected override void OnDestroy()
{
base.OnDestroy();
EMPJPPLIPMG.HCEABLFOLPA hceablfolpa;
this.OEJMNKBJCHC.BEKCCHHMPEH -= hceablfolpa;
EMPJPPLIPMG.EKKCNCNMEOB ekkcncnmeob;
this.OEJMNKBJCHC.EIMFCMEGGPP -= ekkcncnmeob;
EMPJPPLIPMG.KNGHDKHHMIK knghdkhhmik;
this.OEJMNKBJCHC.KBMHDAGMLAF -= knghdkhhmik;
EMPJPPLIPMG.HPBJOLBAKDB hpbjolbakdb;
this.OEJMNKBJCHC.JMKEOLOEKFM -= hpbjolbakdb;
}
// Token: 0x06012F5E RID: 77662 RVA: 0x00453F6C File Offset: 0x0045216C
[Token(Token = "0x6012F5E")]
[Address(RVA = "0x1D31AD0", Offset = "0x1D30AD0", VA = "0x181D31AD0", Slot = "36")]
protected override bool ODPDBPCMGKE()
{
if (!this.HKDIKDABNCK || this.HKDIKDABNCK.enabled)
{
}
GameObject fpemcijjpmj = this.FPEMCIJJPMJ;
return !fpemcijjpmj || !fpemcijjpmj.activeSelf;
}
// Token: 0x06012F5F RID: 77663 RVA: 0x00453FB8 File Offset: 0x004521B8
[Token(Token = "0x6012F5F")]
[Address(RVA = "0x1D31820", Offset = "0x1D30820", VA = "0x181D31820", Slot = "44")]
protected override Bullet LEKAAHGOLBN([Optional] Bullet CFAPNBBHEKB)
{
Bullet bullet = base.LEKAAHGOLBN(CFAPNBBHEKB);
this.HKDIKDABNCK = bullet;
return bullet;
}
// Token: 0x06012F60 RID: 77664 RVA: 0x00453FD8 File Offset: 0x004521D8
[Token(Token = "0x6012F60")]
[Address(RVA = "0x1D31840", Offset = "0x1D30840", VA = "0x181D31840", Slot = "45")]
protected override void LPEPECEFNCK(Bullet NLLMMPLAPBK, Vector3 DDHPAFKBMON)
{
float z = DDHPAFKBMON.z;
base..ctor();
if (this.HKDIKDABNCK == NLLMMPLAPBK)
{
this.HKDIKDABNCK = (ulong)0L;
}
if (this.applyDirectDamage)
{
float z2 = DDHPAFKBMON.z;
Transform transform = base.transform;
int num = 0;
if (transform != num)
{
RecRoomAudioClip recRoomAudioClip = this.directDamageImpactAudio;
Transform transform2 = base.transform;
int num2 = 0;
int num3 = 0;
SFXAudioSource sfxaudioSource = AudioManager.Play3DSFX(recRoomAudioClip, transform2, num3, num2);
}
}
int num4 = 0;
if (this != num4)
{
GameObject gameObject = base.gameObject;
this.FPEMCIJJPMJ = gameObject;
}
float z3 = DDHPAFKBMON.z;
this.PlayPreFireAnimation();
}
// Token: 0x06012F61 RID: 77665 RVA: 0x00454084 File Offset: 0x00452284
[Token(Token = "0x6012F61")]
[Address(RVA = "0x1D31710", Offset = "0x1D30710", VA = "0x181D31710")]
protected void KFECAEGMNDF(float NBOCPMDNOCF, Vector3 DDHPAFKBMON, float OMLBPICLALA, float LFDFFDCJAAD = 1f)
{
if (base.OGIBLNIIHDK)
{
PhotonView photonView = base.JDHMIOJKLCK;
DGLOJCGDOGG.BNALDBHFCMB<float, Vector3, float, float> bnaldbhfcmb = new DGLOJCGDOGG.BNALDBHFCMB(this.RpcManualExplode);
float z = DDHPAFKBMON.z;
}
}
// Token: 0x06012F62 RID: 77666 RVA: 0x004540BC File Offset: 0x004522BC
[Token(Token = "0x6012F62")]
[Address(RVA = "0x1D31D20", Offset = "0x1D30D20", VA = "0x181D31D20")]
[NFOMENMAOIA]
protected void RpcManualExplode(float NBOCPMDNOCF, Vector3 DDHPAFKBMON, float OMLBPICLALA, float LFDFFDCJAAD)
{
float z = DDHPAFKBMON.z;
this.PlayPreFireAnimation();
}
// Token: 0x06012F63 RID: 77667 RVA: 0x004540D8 File Offset: 0x004522D8
[Token(Token = "0x6012F63")]
[Address(RVA = "0x1D314F0", Offset = "0x1D304F0", VA = "0x181D314F0", Slot = "52")]
protected virtual void IMNCAGFEELB(float NBOCPMDNOCF, Vector3 DDHPAFKBMON, float OMLBPICLALA, float LFDFFDCJAAD = 1f)
{
ExplosiveRangedWeapon.BJKFCAHGJJK bjkfcahgjjk;
bjkfcahgjjk.System.IDisposable.Dispose();
float z = DDHPAFKBMON.z;
bjkfcahgjjk.position.z = z;
bjkfcahgjjk.chargeAmount = (float)0;
bjkfcahgjjk.delay = NBOCPMDNOCF;
bjkfcahgjjk.radius = OMLBPICLALA;
bjkfcahgjjk.<>1__state = (int)((ulong)0L);
bjkfcahgjjk.<>4__this = this;
Coroutine coroutine = base.StartCoroutine(bjkfcahgjjk);
float z2 = DDHPAFKBMON.z;
}
// Token: 0x06012F64 RID: 77668 RVA: 0x00454134 File Offset: 0x00452334
[Token(Token = "0x6012F64")]
[Address(RVA = "0x1D31440", Offset = "0x1D30440", VA = "0x181D31440")]
private IEnumerator IDDAEFPBAKC(float NBOCPMDNOCF, Vector3 DDHPAFKBMON, float OMLBPICLALA, float LFDFFDCJAAD = 1f)
{
/*
An exception occurred when decompiling this method (06012F64)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Collections.IEnumerator RecRoom.Tools.Weapons.ExplosiveRangedWeapon::IDDAEFPBAKC(System.Single,UnityEngine.Vector3,System.Single,System.Single)
---> System.Exception: Basic block has to end with unconditional control flow.
{
Block_0:
call:void(BJKFCAHGJJK::System.IDisposable.Dispose, ldloc:BJKFCAHGJJK(var_0))
stloc:float32(var_1_0C, ldfld:float32(Vector3::z, ldloc:Vector3[exp:valuetype [UnityEngine.CoreModule]UnityEngine.Vector3&](DDHPAFKBMON)))
stfld:float32(BJKFCAHGJJK::delay, ldloc:BJKFCAHGJJK(var_0), ldloc:float32(NBOCPMDNOCF))
stfld:float32(BJKFCAHGJJK::radius, ldloc:BJKFCAHGJJK(var_0), ldloc:float32(OMLBPICLALA))
stfld:ExplosiveRangedWeapon(BJKFCAHGJJK::<>4__this, ldloc:BJKFCAHGJJK(var_0), ldloc:ExplosiveRangedWeapon(this))
stfld:float32(BJKFCAHGJJK::chargeAmount, ldloc:BJKFCAHGJJK(var_0), ldc.i4:int32[exp:float32](0))
stfld:int32(BJKFCAHGJJK::<>1__state, ldloc:BJKFCAHGJJK(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
stfld:float32(Vector3::z, ldfld:Vector3[exp:valuetype [UnityEngine.CoreModule]UnityEngine.Vector3&](BJKFCAHGJJK::position, ldloc:BJKFCAHGJJK(var_0)), ldloc:float32(var_1_0C))
}
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: 0x06012F65 RID: 77669 RVA: 0x00454180 File Offset: 0x00452380
[Token(Token = "0x6012F65")]
[Address(RVA = "0x1D30D30", Offset = "0x1D2FD30", VA = "0x181D30D30")]
protected void DFGHNBLOFFK(Vector3 DDHPAFKBMON, float OMLBPICLALA, float LFDFFDCJAAD = 1f, float BKOHFEOCAII = 1f)
{
float z = DDHPAFKBMON.z;
PooledParticle pooledParticle;
if (pooledParticle)
{
GameObject gameObject = pooledParticle.gameObject;
this.FPEMCIJJPMJ = gameObject;
}
RecRoomAudioClip recRoomAudioClip = this.explosionAudio;
float z2 = DDHPAFKBMON.z;
EMPJPPLIPMG oejmnkbjchc = this.OEJMNKBJCHC;
float z3 = DDHPAFKBMON.z;
AnimationCurve animationCurve = this.forceFalloff;
float num = this.maxPlayerDamageFalloff;
AnimationCurve animationCurve2 = this.damageFalloff;
}
// Token: 0x06012F66 RID: 77670 RVA: 0x004541EC File Offset: 0x004523EC
[Token(Token = "0x6012F66")]
[Address(RVA = "0x1D31640", Offset = "0x1D30640", VA = "0x181D31640", Slot = "39")]
public override bool ImpactAlreadyRegistered(byte JKPAIMCLIBI, AGAJMBPABDL HMEIODIHDCL)
{
float realtimeSinceStartup = Time.realtimeSinceStartup;
List<AGAJMBPABDL> gofbmkpdjem = this.GOFBMKPDJEM;
if (realtimeSinceStartup >= 1f || gofbmkpdjem.Contains(HMEIODIHDCL))
{
gofbmkpdjem.Clear();
}
this.GOFBMKPDJEM.Add(HMEIODIHDCL);
float realtimeSinceStartup2 = Time.realtimeSinceStartup;
this.OCIINOPLKPK = realtimeSinceStartup2;
throw new NullReferenceException();
}
// Token: 0x06012F67 RID: 77671 RVA: 0x00454248 File Offset: 0x00452448
[Token(Token = "0x6012F67")]
[Address(RVA = "0x1D31A60", Offset = "0x1D30A60", VA = "0x181D31A60", Slot = "46")]
protected override void ODOBKGAHAGH(Bullet NLLMMPLAPBK, Player IEKDDPPNFPF, Player.GAHEJKDCLLE NMKAKHOEMGB, GHMDIDJLFMC KNLMJBAKCGF)
{
if (this.applyDirectDamage)
{
}
}
// Token: 0x06012F68 RID: 77672 RVA: 0x00454260 File Offset: 0x00452460
[Token(Token = "0x6012F68")]
[Address(RVA = "0x1D31150", Offset = "0x1D30150", VA = "0x181D31150", Slot = "47")]
protected override void EIEJLOGPMGM(Bullet NLLMMPLAPBK, Enemy BPJNEFJBBML, ANBBFGKPJFD EMPFLFOEDFD, GHMDIDJLFMC KNLMJBAKCGF)
{
if (this.applyDirectDamage)
{
}
}
// Token: 0x06012F69 RID: 77673 RVA: 0x00454278 File Offset: 0x00452478
[Token(Token = "0x6012F69")]
[Address(RVA = "0x1D31220", Offset = "0x1D30220", VA = "0x181D31220", Slot = "48")]
protected override void GLFCGNNCNIB(Bullet NLLMMPLAPBK, Tool BKKNJFFJBKN, GHMDIDJLFMC KNLMJBAKCGF)
{
if (this.applyDirectDamage)
{
base.GLFCGNNCNIB(NLLMMPLAPBK, BKKNJFFJBKN, KNLMJBAKCGF);
}
}
// Token: 0x06012F6A RID: 77674 RVA: 0x00454298 File Offset: 0x00452498
[Token(Token = "0x6012F6A")]
[Address(RVA = "0x1D311C0", Offset = "0x1D301C0", VA = "0x181D311C0", Slot = "49")]
protected override void EJAEGPHPGBL(Bullet NLLMMPLAPBK, Trap JHIDLPIGNBD, GHMDIDJLFMC KNLMJBAKCGF)
{
if (this.applyDirectDamage)
{
base.EJAEGPHPGBL(NLLMMPLAPBK, JHIDLPIGNBD, KNLMJBAKCGF);
}
}
// Token: 0x06012F6B RID: 77675 RVA: 0x004542B8 File Offset: 0x004524B8
[Token(Token = "0x6012F6B")]
[Address(RVA = "0x1D30CD0", Offset = "0x1D2FCD0", VA = "0x181D30CD0", Slot = "53")]
protected virtual void CDIOEBNIGJF(Player EDIBICHIJJH, Player.GAHEJKDCLLE EAMJHCGHCIE, GHMDIDJLFMC KNLMJBAKCGF)
{
float y = KNLMJBAKCGF.NKKJICPFILJ.y;
float z = KNLMJBAKCGF.FEDGOFKEGEF.z;
float z2 = KNLMJBAKCGF.EGJBGIIHEEL.z;
}
// Token: 0x06012F6C RID: 77676 RVA: 0x004542EC File Offset: 0x004524EC
[Token(Token = "0x6012F6C")]
[Address(RVA = "0x1D30ED0", Offset = "0x1D2FED0", VA = "0x181D30ED0", Slot = "54")]
protected virtual void DJIINLLBBHH(Enemy FDJDEJIKCFH, ANBBFGKPJFD PAKELHPNJDI, GHMDIDJLFMC KNLMJBAKCGF)
{
bool flag;
if (!flag)
{
float z = KNLMJBAKCGF.EGJBGIIHEEL.z;
int enemyDamage = this.GetEnemyDamage(z);
if (!base.OGIBLNIIHDK || FDJDEJIKCFH.OGIBLNIIHDK)
{
}
}
}
// Token: 0x06012F6D RID: 77677 RVA: 0x0045432C File Offset: 0x0045252C
[Token(Token = "0x6012F6D")]
[Address(RVA = "0x1D31080", Offset = "0x1D30080", VA = "0x181D31080", Slot = "55")]
protected virtual void EEHAEDNIDDK(Tool BKKNJFFJBKN, GHMDIDJLFMC KNLMJBAKCGF)
{
Tool tool = this._tool;
if (!(BKKNJFFJBKN == tool))
{
float y = KNLMJBAKCGF.NKKJICPFILJ.y;
float z = KNLMJBAKCGF.FEDGOFKEGEF.z;
float z2 = KNLMJBAKCGF.EGJBGIIHEEL.z;
}
}
// Token: 0x06012F6E RID: 77678 RVA: 0x00454370 File Offset: 0x00452570
[Token(Token = "0x6012F6E")]
[Address(RVA = "0x1D31330", Offset = "0x1D30330", VA = "0x181D31330", Slot = "56")]
protected virtual void HMOBOJKIGPO(Trap AMPLOOJODLP, GHMDIDJLFMC KNLMJBAKCGF)
{
float y = KNLMJBAKCGF.NKKJICPFILJ.y;
float z = KNLMJBAKCGF.FEDGOFKEGEF.z;
if (base.OGIBLNIIHDK && AMPLOOJODLP.OGIBLNIIHDK)
{
float y2 = KNLMJBAKCGF.NKKJICPFILJ.y;
}
}
// Token: 0x06012F6F RID: 77679 RVA: 0x004543BC File Offset: 0x004525BC
[Token(Token = "0x6012F6F")]
[Address(RVA = "0x1D31280", Offset = "0x1D30280", VA = "0x181D31280", Slot = "21")]
public override int GetPlayerImpactDamage(Player.GAHEJKDCLLE EAMJHCGHCIE, float DBINDJBHOKM, bool COEKCNDDMKK)
{
return Mathf.RoundToInt(Mathf.Clamp01(DBINDJBHOKM));
}
// Token: 0x06012F70 RID: 77680 RVA: 0x004543D4 File Offset: 0x004525D4
[Token(Token = "0x6012F70")]
[Address(RVA = "0x1D31D70", Offset = "0x1D30D70", VA = "0x181D31D70")]
public ExplosiveRangedWeapon()
{
AnimationCurve animationCurve = AnimationCurve.Linear((float)0, 1f, 1f, 1f);
this.forceFalloff = animationCurve;
AnimationCurve animationCurve2 = AnimationCurve.Linear((float)0, 1f, 1f, 1f);
this.damageFalloff = animationCurve2;
this.maxPlayerDamageFalloff = 1f;
EMPJPPLIPMG empjpplipmg = new EMPJPPLIPMG();
this.OEJMNKBJCHC = empjpplipmg;
List<AGAJMBPABDL> list = new List();
this.GOFBMKPDJEM = list;
base..ctor();
}
// Token: 0x0400C350 RID: 50000
[global::Cpp2IlInjected.FieldOffset(Offset = "0x2F0")]
[Token(Token = "0x400C350")]
[SerializeField]
[Header("Direct Damage")]
private bool applyDirectDamage;
// Token: 0x0400C351 RID: 50001
[global::Cpp2IlInjected.FieldOffset(Offset = "0x2F8")]
[Token(Token = "0x400C351")]
[SerializeField]
private PooledParticle directDamageParticles;
// Token: 0x0400C352 RID: 50002
[global::Cpp2IlInjected.FieldOffset(Offset = "0x300")]
[Token(Token = "0x400C352")]
[SerializeField]
private RecRoomAudioClip directDamageImpactAudio;
// Token: 0x0400C353 RID: 50003
[global::Cpp2IlInjected.FieldOffset(Offset = "0x308")]
[Token(Token = "0x400C353")]
[SerializeField]
[Header("Explosives")]
private float explosionDelay;
// Token: 0x0400C354 RID: 50004
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30C")]
[Token(Token = "0x400C354")]
[SerializeField]
protected float explosionRadius = 2f;
// Token: 0x0400C355 RID: 50005
[global::Cpp2IlInjected.FieldOffset(Offset = "0x310")]
[Token(Token = "0x400C355")]
[SerializeField]
protected float explosionForce = 30f;
// Token: 0x0400C356 RID: 50006
[global::Cpp2IlInjected.FieldOffset(Offset = "0x318")]
[Token(Token = "0x400C356")]
[SerializeField]
protected PooledParticle explosionParticles;
// Token: 0x0400C357 RID: 50007
[global::Cpp2IlInjected.FieldOffset(Offset = "0x320")]
[Token(Token = "0x400C357")]
[SerializeField]
protected RecRoomAudioClip explosionAudio;
// Token: 0x0400C358 RID: 50008
[global::Cpp2IlInjected.FieldOffset(Offset = "0x328")]
[Token(Token = "0x400C358")]
[SerializeField]
protected AnimationCurve forceFalloff;
// Token: 0x0400C359 RID: 50009
[global::Cpp2IlInjected.FieldOffset(Offset = "0x330")]
[Token(Token = "0x400C359")]
[SerializeField]
protected AnimationCurve damageFalloff;
// Token: 0x0400C35A RID: 50010
[global::Cpp2IlInjected.FieldOffset(Offset = "0x338")]
[Token(Token = "0x400C35A")]
[SerializeField]
[Range(0f, 1f)]
protected float maxPlayerDamageFalloff;
// Token: 0x0400C35B RID: 50011
[global::Cpp2IlInjected.FieldOffset(Offset = "0x340")]
[Token(Token = "0x400C35B")]
protected EMPJPPLIPMG OEJMNKBJCHC;
// Token: 0x0400C35C RID: 50012
[global::Cpp2IlInjected.FieldOffset(Offset = "0x348")]
[Token(Token = "0x400C35C")]
private Bullet HKDIKDABNCK;
// Token: 0x0400C35D RID: 50013
[global::Cpp2IlInjected.FieldOffset(Offset = "0x350")]
[Token(Token = "0x400C35D")]
private GameObject FPEMCIJJPMJ;
// Token: 0x0400C35E RID: 50014
[global::Cpp2IlInjected.FieldOffset(Offset = "0x358")]
[Token(Token = "0x400C35E")]
private float OCIINOPLKPK;
// Token: 0x0400C35F RID: 50015
[global::Cpp2IlInjected.FieldOffset(Offset = "0x360")]
[Token(Token = "0x400C35F")]
private List<AGAJMBPABDL> GOFBMKPDJEM;
}
}