Sora.dll

Decompiled 8 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Mage;
using EntityStates.Merc;
using HG.Reflection;
using IL.RoR2;
using KinematicCharacterController;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using On.RoR2.UI;
using R2API;
using R2API.Utils;
using Rewired;
using Rewired.ComponentControls.Effects;
using RoR2;
using RoR2.Achievements;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using TMPro;
using Unity;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Bindings;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.UI;

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Sora")]
[assembly: AssemblyTitle("Sora")]
[assembly: AssemblyCompany("Sora")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Sora
{
	public static class Achievements
	{
		[RegisterAchievement("SORA_UNLOCK", "ACHIEVEMENT_SORA_UNLOCK_UNLOCKABLE_ID", null, typeof(DefeatHeartlessSoraServerAchievement))]
		public class SoraUnlockable : BaseAchievement
		{
			private class DefeatHeartlessSoraServerAchievement : BaseServerAchievement
			{
				private BodyIndex bodyIndex;

				public override void OnInstall()
				{
					//IL_000e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0013: Unknown result type (might be due to invalid IL or missing references)
					((BaseServerAchievement)this).OnInstall();
					bodyIndex = BodyCatalog.FindBodyIndex("HeartlessSoraBody");
					GlobalEventManager.onCharacterDeathGlobal += OnCharacterDeathGlobal;
					Inventory.onServerItemGiven += Inventory_onServerItemGiven;
				}

				private void Inventory_onServerItemGiven(Inventory inventory, ItemIndex itemIndex, int count)
				{
					//IL_0008: Unknown result type (might be due to invalid IL or missing references)
					//IL_000e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0087: Unknown result type (might be due to invalid IL or missing references)
					//IL_0078: Unknown result type (might be due to invalid IL or missing references)
					//IL_008a: Unknown result type (might be due to invalid IL or missing references)
					//IL_008f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0097: Unknown result type (might be due to invalid IL or missing references)
					//IL_0099: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a0: Expected O, but got Unknown
					//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d3: Expected O, but got Unknown
					//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d5: Expected O, but got Unknown
					CharacterMaster component = ((Component)inventory).GetComponent<CharacterMaster>();
					if (itemIndex != Items.LunarSpecialReplacement.itemIndex || !Object.op_Implicit((Object)(object)component))
					{
						return;
					}
					CharacterBody body = component.GetBody();
					if (!Object.op_Implicit((Object)(object)body) || !body.isPlayerControlled || !Object.op_Implicit((Object)(object)body.healthComponent))
					{
						return;
					}
					Transform spawnOnTarget;
					MonsterSpawnDistance val;
					if (Object.op_Implicit((Object)(object)TeleporterInteraction.instance))
					{
						spawnOnTarget = ((Component)TeleporterInteraction.instance).transform;
						val = (MonsterSpawnDistance)1;
					}
					else
					{
						spawnOnTarget = body.coreTransform;
						val = (MonsterSpawnDistance)2;
					}
					DirectorPlacementRule val2 = new DirectorPlacementRule
					{
						spawnOnTarget = spawnOnTarget,
						placementMode = (PlacementMode)3
					};
					DirectorCore.GetMonsterSpawnDistance(val, ref val2.minDistance, ref val2.maxDistance);
					DirectorSpawnRequest val3 = new DirectorSpawnRequest((SpawnCard)(object)Prefabs.shadowSpawnCard, val2, new Xoroshiro128Plus((ulong)body.healthComponent.health));
					val3.teamIndexOverride = (TeamIndex)2;
					val3.ignoreTeamMemberLimit = true;
					CombatSquad combatSquad = null;
					DirectorSpawnRequest val4 = val3;
					val4.onSpawnedServer = (Action<SpawnResult>)Delegate.Combine(val4.onSpawnedServer, (Action<SpawnResult>)delegate(SpawnResult result)
					{
						//IL_0030: Unknown result type (might be due to invalid IL or missing references)
						if (!Object.op_Implicit((Object)(object)combatSquad))
						{
							combatSquad = Object.Instantiate<GameObject>(Prefabs.shadowEncounter).GetComponent<CombatSquad>();
						}
						combatSquad.AddMember(result.spawnedInstance.GetComponent<CharacterMaster>());
					});
					DirectorCore.instance.TrySpawnObject(val3);
					if (Object.op_Implicit((Object)(object)combatSquad))
					{
						NetworkServer.Spawn(((Component)combatSquad).gameObject);
					}
				}

				private void OnCharacterDeathGlobal(DamageReport damageReport)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Unknown result type (might be due to invalid IL or missing references)
					//IL_0010: Unknown result type (might be due to invalid IL or missing references)
					//IL_0016: Invalid comparison between Unknown and I4
					if (damageReport.victimBodyIndex == bodyIndex && (int)damageReport.victimTeamIndex == 1)
					{
					}
				}

				public override void OnUninstall()
				{
					GlobalEventManager.onCharacterDeathGlobal -= OnCharacterDeathGlobal;
					Inventory.onServerItemGiven -= Inventory_onServerItemGiven;
					((BaseServerAchievement)this).OnUninstall();
				}
			}

			public override void OnInstall()
			{
				((BaseAchievement)this).OnInstall();
				((BaseAchievement)this).SetServerTracked(true);
			}

			public override void OnUninstall()
			{
				((BaseAchievement)this).OnUninstall();
			}
		}

		[RegisterAchievement("SORA_MASTERY", "ACHIEVEMENT_SORA_MASTERY_UNLOCKABLE_ID", null, null)]
		public class MasteryUnlockable : BasePerSurvivorClearGameMonsoonAchievement
		{
			public override BodyIndex LookUpRequiredBodyIndex()
			{
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				return BodyCatalog.FindBodyIndex("SoraBody");
			}
		}

		internal static UnlockableDef soraUnlock;

		internal static UnlockableDef masteryUnlock;

		public static void RegisterUnlockables()
		{
			soraUnlock = NewUnlockable("UNLOCK", Assets.Load<Sprite>("portrait"), "Heartless", "Purify a heart succumbed to darkness.");
			masteryUnlock = NewUnlockable("MASTERY", Assets.Load<Sprite>("RikuIcon"), "SORA: Mastery", "As Sora, beat the game or obliterate on Monsoon.");
		}

		private static UnlockableDef NewUnlockable(string AchievementIdentifier, Sprite Icon, string Title, string Description)
		{
			string text = "ACHIEVEMENT_SORA_";
			UnlockableDef val = ScriptableObject.CreateInstance<UnlockableDef>();
			string langName = text + AchievementIdentifier + "_NAME";
			string langDesc = text + AchievementIdentifier + "_DESCRIPTION";
			LanguageAPI.Add(langName, Title);
			LanguageAPI.Add(langDesc, Description);
			Func<string> func = () => Language.GetStringFormatted("UNLOCKED_FORMAT", new object[2]
			{
				Language.GetString(langName),
				Language.GetString(langDesc)
			});
			val.cachedName = text + AchievementIdentifier + "_UNLOCKABLE_ID";
			val.getHowToUnlockString = func;
			val.getUnlockedString = func;
			val.achievementIcon = Icon;
			val.sortScore = 200;
			val.hidden = false;
			ContentAddition.AddUnlockableDef(val);
			return val;
		}
	}
	internal class Assets
	{
		public static AssetBundle MainAssetBundle;

		public static T Load<T>(string name) where T : Object
		{
			return MainAssetBundle.LoadAsset<T>(name);
		}

		public static void PopulateAssets()
		{
			if ((Object)(object)MainAssetBundle == (Object)null)
			{
				using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Sora.soraassets");
				MainAssetBundle = AssetBundle.LoadFromStream(stream);
			}
			using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Sora.Sora.bnk");
			byte[] array = new byte[stream2.Length];
			stream2.Read(array, 0, array.Length);
			SoundBanks.Add(array);
		}
	}
	internal class CrosshairBehaviour : CrosshairController
	{
		public Image[] Nibs;

		public Image[] Magic;

		public SoraBehaviour behaviour;

		private void Start()
		{
			HudElement component = ((Component)this).GetComponent<HudElement>();
			if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.targetBodyObject))
			{
				behaviour = component.targetBodyObject.GetComponent<SoraBehaviour>();
			}
		}

		private void FixedUpdate()
		{
			if (Object.op_Implicit((Object)(object)behaviour))
			{
				for (int i = 0; i < Magic.Length; i++)
				{
					((Behaviour)Magic[i]).enabled = behaviour.currentMagic == i;
				}
			}
		}
	}
	internal class DisplayAnimatorBehaviour : MonoBehaviour
	{
		private uint ID;

		private void OnEnable()
		{
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Expected O, but got Unknown
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			ID = AkSoundEngine.PostEvent(Sounds.Play_Sora_DearlyBeloved, ((Component)this).gameObject);
			int num = RoR2Application.rng.RangeInt(0, 2);
			((Component)this).GetComponent<Animator>().Play("Display" + num, 0);
			GameObject gameObject = ((Component)((Component)this).GetComponentInChildren<Light>(true)).gameObject;
			gameObject.SetActive(true);
			if (num == 0)
			{
				((Component)this).transform.localPosition = new Vector3(0f, 0.7f, 0f);
				((Component)this).transform.localRotation = Quaternion.Euler(0f, -45f, 0f);
				gameObject.transform.localPosition = new Vector3(0f, 5.9f, 0f);
			}
			MusicController.LateUpdate += new Manipulator(MusicController_LateUpdate);
		}

		private void MusicController_LateUpdate(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			ILCursor val = new ILCursor(il);
			int num = default(int);
			val.GotoNext(new Func<Instruction, bool>[1]
			{
				(Instruction i) => ILPatternMatchingExt.MatchStloc(i, ref num)
			});
			val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool b) => true));
		}

		private void OnDisable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			MusicController.LateUpdate -= new Manipulator(MusicController_LateUpdate);
			AkSoundEngine.StopPlayingID(ID);
		}
	}
	public class MPPickup : MonoBehaviour
	{
		public GameObject baseObject;

		public TeamFilter teamFilter;

		private void Awake()
		{
			teamFilter = ((Component)this).GetComponent<TeamFilter>();
		}

		private void OnTriggerStay(Collider collider)
		{
			SoraBehaviour component = ((Component)collider).GetComponent<SoraBehaviour>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.AddMP(component.immunityMPGain);
				EffectManager.SimpleMuzzleFlash(Prefabs.mpEffect, ((Component)collider).gameObject, "base", false);
				Object.Destroy((Object)(object)baseObject);
			}
		}
	}
	internal class ProjectileGhostSkinBehaviour : MonoBehaviour
	{
		private ProjectileGhostController ghost;

		private ProjectileController controller;

		private GameObject owner;

		private void OnEnable()
		{
			ghost = ((Component)this).GetComponent<ProjectileGhostController>();
		}

		private void FixedUpdate()
		{
			if (!Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)ghost) && Object.op_Implicit((Object)(object)ghost.authorityTransform))
			{
				controller = ((Component)ghost.authorityTransform).GetComponent<ProjectileController>();
			}
			if (!Object.op_Implicit((Object)(object)ghost) || !Object.op_Implicit((Object)(object)controller) || Object.op_Implicit((Object)(object)owner))
			{
				return;
			}
			owner = controller.owner;
			if (!Object.op_Implicit((Object)(object)owner))
			{
				return;
			}
			CharacterBody component = owner.GetComponent<CharacterBody>();
			if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.modelLocator) || !Object.op_Implicit((Object)(object)component.modelLocator.modelTransform))
			{
				return;
			}
			CharacterModel component2 = ((Component)component.modelLocator.modelTransform).GetComponent<CharacterModel>();
			if (Object.op_Implicit((Object)(object)component2))
			{
				Renderer renderer = component2.baseRendererInfos[1].renderer;
				SkinnedMeshRenderer val = (SkinnedMeshRenderer)(object)((renderer is SkinnedMeshRenderer) ? renderer : null);
				if (Object.op_Implicit((Object)(object)val))
				{
					SkinnedMeshRenderer componentInChildren = ((Component)this).GetComponentInChildren<SkinnedMeshRenderer>();
					componentInChildren.sharedMesh = val.sharedMesh;
					((Renderer)componentInChildren).material = ((Renderer)val).material;
				}
			}
		}
	}
	internal class ProjectileLoopSound : MonoBehaviour
	{
		public string startSound;

		public string loopSound;

		public string endSound;

		private uint ID;

		private void Start()
		{
			AkSoundEngine.PostEvent(startSound, ((Component)this).gameObject);
			ID = AkSoundEngine.PostEvent(loopSound, ((Component)this).gameObject);
		}

		private void OnDisable()
		{
			AkSoundEngine.StopPlayingID(ID);
			AkSoundEngine.PostEvent(endSound, ((Component)this).gameObject);
		}
	}
	internal class SoraBehaviour : NetworkBehaviour
	{
		private struct MagicSelection
		{
			public Transform transform;

			public Image selection;

			public bool active;

			public float stopwatch;

			public MagicSelection(Transform obj)
			{
				//IL_0018: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				transform = obj;
				selection = ((Component)obj).GetComponentsInChildren<Image>()[1];
				active = obj.localPosition == new Vector3(110f, -25f);
				stopwatch = 0f;
			}
		}

		public bool isShadow = false;

		public bool canExecute = true;

		public bool canInterrupt = false;

		public bool inRecovery = false;

		public float mpValue = 1f;

		public float recoveryStopwatch = 0f;

		public GameObject mpBar;

		public Image barImage;

		public TextMeshProUGUI currentMP;

		public Image portrait;

		public Image mpIcon;

		public Image hpIcon;

		public Image healthBar;

		public CharacterBody body;

		private Animator animator;

		private Transform health;

		private Transform lv;

		private Transform bars;

		private GameObject uiSelection;

		public Player player;

		private AnimationCurve curve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f);

		public float recoveryDuration = 20f;

		private Color mpColor = new Color(0.003921569f, 0.4470588f, 0.9215686f);

		private Color recoveryColor = new Color(0.8823529f, 0.1529412f, 0.6235294f);

		public float minCloseDistance = 11.5f;

		public float minMeleeDistance = 9f;

		public float selfForceMult = 2f;

		public SpriteRenderer brackets;

		public SpriteRenderer melee;

		public SpriteRenderer ranged;

		public SpriteRenderer close;

		public SpriteRenderer lockOn;

		public float immunityMPGain = 0.12f;

		public float glideSpeed = 1.75f;

		public float yVelocityDeacceleration = 4f;

		public float glideyVelocityDeacceleration = 2.5f;

		public float eeee = 7f;

		public HurtBox target;

		private readonly BullseyeSearch search = new BullseyeSearch();

		private readonly SphereSearch sphereSearch = new SphereSearch();

		private Indicator indicator;

		public float maxTrackingAngle = 60f;

		public float trackerUpdateFrequency = 10f;

		public float maxTrackingDistance = 20f;

		public float dodgeSpeed = 0.32f;

		public float dashSpeed = 0.25f;

		public float spreadBloom = 5f;

		public float maxSpeedScaling = 20f;

		public float maxSpeedMult = 3f;

		private float trackerUpdateStopwatch;

		public HurtBox lockedTarget;

		public CameraRigController cameraRigController = null;

		public SkillDef primary;

		public SkillDef special;

		private MagicSelection[] magicSelections;

		public int currentMagic = 0;

		public float[] magicCosts = new float[8] { 0.1f, 0.12f, 0.15f, 0.12f, 0.15f, 0.1f, 0.3f, 1.1f };

		public Sprite[] magicIcons = (Sprite[])(object)new Sprite[8]
		{
			Prefabs.fireIcon,
			Prefabs.blizzardIcon,
			Prefabs.thunderIcon,
			Prefabs.waterIcon,
			Prefabs.windIcon,
			Prefabs.reflectIcon,
			Prefabs.magnetIcon,
			Prefabs.cureIcon
		};

		private static int kCmdCmdUpdateAnimatorParameters;

		private static int kRpcRpcUpdateAnimatorParameters;

		private static int kCmdCmdLockTarget;

		private static int kRpcRpcLockTarget;

		private static int kRpcRpcAddMP;

		private void Awake()
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			search.minDistanceFilter = 0.01f;
			maxTrackingAngle = 60f;
			indicator = new Indicator(((Component)this).gameObject, Prefabs.aimIndicator);
		}

		private void SearchForTarget(Ray aimRay)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			search.teamMaskFilter = TeamMask.GetUnprotectedTeams(body.teamComponent.teamIndex);
			search.filterByLoS = true;
			search.searchOrigin = ((Ray)(ref aimRay)).origin;
			search.searchDirection = ((Ray)(ref aimRay)).direction;
			search.sortMode = (SortMode)1;
			search.maxDistanceFilter = maxTrackingDistance;
			search.maxAngleFilter = maxTrackingAngle;
			search.RefreshCandidates();
			search.FilterOutGameObject(((Component)this).gameObject);
			search.FilterOutDeadEnemies();
			target = search.GetResults().FirstOrDefault();
		}

		[Command]
		public void CmdUpdateAnimatorParameters(string[] parameters, float[] values)
		{
			CallRpcUpdateAnimatorParameters(parameters, values);
		}

		[ClientRpc]
		public void RpcUpdateAnimatorParameters(string[] parameters, float[] values)
		{
			if (Object.op_Implicit((Object)(object)animator) && !((NetworkBehaviour)this).isServer)
			{
				for (int i = 0; i < parameters.Length; i++)
				{
					animator.SetFloat(parameters[i], values[i]);
				}
			}
		}

		[Command]
		public void CmdLockTarget()
		{
			CallRpcLockTarget();
		}

		[ClientRpc]
		public void RpcLockTarget()
		{
			if (Object.op_Implicit((Object)(object)target) && !((NetworkBehaviour)this).isServer)
			{
				if (!Object.op_Implicit((Object)(object)lockedTarget))
				{
					lockedTarget = target;
				}
				else
				{
					lockedTarget = null;
				}
			}
		}

		private void OnEnable()
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			indicator.active = true;
			maxTrackingDistance = 35f;
			sphereSearch.radius = minCloseDistance;
			sphereSearch.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
			LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser();
			NetworkUser val = ((firstLocalUser != null) ? firstLocalUser.currentNetworkUser : null);
			if (Object.op_Implicit((Object)(object)val) && val.inputPlayer != null)
			{
				player = val.inputPlayer;
			}
			body = ((Component)this).GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)body.modelLocator) && Object.op_Implicit((Object)(object)body.modelLocator.modelTransform))
			{
				animator = ((Component)body.modelLocator.modelTransform).GetComponent<Animator>();
			}
			HUD.Update += new hook_Update(HUD_Update);
		}

		private void OnDisable()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Expected O, but got Unknown
			if (Object.op_Implicit((Object)(object)bars))
			{
			}
			if (Object.op_Implicit((Object)(object)uiSelection))
			{
			}
			if (Object.op_Implicit((Object)(object)mpBar))
			{
			}
			indicator.active = false;
			HUD.Update -= new hook_Update(HUD_Update);
		}

		public void ConsumeMP(int magicIndex)
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			float num = magicCosts[magicIndex];
			if (Object.op_Implicit((Object)(object)body) && isShadow)
			{
				mpValue = 1f;
				inRecovery = true;
			}
			else if (num >= mpValue)
			{
				mpValue = 1f;
				inRecovery = true;
				if (Object.op_Implicit((Object)(object)mpIcon))
				{
					((Graphic)mpIcon).color = recoveryColor;
				}
				if (Object.op_Implicit((Object)(object)barImage))
				{
					((Graphic)barImage).color = recoveryColor;
				}
				if (Object.op_Implicit((Object)(object)primary))
				{
					primary.icon = Prefabs.recoveryAttackIcon;
				}
			}
			else
			{
				mpValue -= num;
			}
		}

		public void AddMP(float value)
		{
			if (inRecovery)
			{
				if (mpValue <= value)
				{
					Recover();
				}
				else
				{
					mpValue -= value;
				}
			}
			else
			{
				mpValue += value;
			}
		}

		[ClientRpc]
		public void RpcAddMP(float value)
		{
			AddMP(value);
		}

		public void Recover()
		{
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			AkSoundEngine.PostEvent(Sounds.Play_Sora_UI_Recover, ((Component)this).gameObject);
			inRecovery = false;
			recoveryStopwatch = 0f;
			mpValue = 1f;
			if (Object.op_Implicit((Object)(object)mpIcon))
			{
				((Graphic)mpIcon).color = mpColor;
			}
			if (Object.op_Implicit((Object)(object)barImage))
			{
				((Graphic)barImage).color = mpColor;
			}
			if (Object.op_Implicit((Object)(object)primary))
			{
				primary.icon = Prefabs.attackIcon;
			}
		}

		private void HUD_Update(orig_Update orig, HUD self)
		{
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0304: Unknown result type (might be due to invalid IL or missing references)
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0817: Unknown result type (might be due to invalid IL or missing references)
			//IL_0360: Unknown result type (might be due to invalid IL or missing references)
			//IL_0365: Unknown result type (might be due to invalid IL or missing references)
			//IL_0380: Unknown result type (might be due to invalid IL or missing references)
			//IL_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fa0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Unknown result type (might be due to invalid IL or missing references)
			//IL_055e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0569: Unknown result type (might be due to invalid IL or missing references)
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_044e: Unknown result type (might be due to invalid IL or missing references)
			//IL_045f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_059c: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05be: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d1d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d2c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_0653: Unknown result type (might be due to invalid IL or missing references)
			//IL_0664: Unknown result type (might be due to invalid IL or missing references)
			//IL_0675: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_060b: Unknown result type (might be due to invalid IL or missing references)
			//IL_061c: Unknown result type (might be due to invalid IL or missing references)
			//IL_062d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d73: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d4d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d52: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dbf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d94: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d99: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e2c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e82: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c41: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c74: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c70: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c80: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c82: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cbd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ccf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ce9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ceb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cef: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)indicator.visualizerInstance) && !Object.op_Implicit((Object)(object)brackets))
			{
				ChildLocator component = indicator.visualizerInstance.GetComponent<ChildLocator>();
				brackets = ((Component)component.FindChild("Brackets")).GetComponent<SpriteRenderer>();
				melee = ((Component)component.FindChild("Melee")).GetComponent<SpriteRenderer>();
				ranged = ((Component)component.FindChild("Ranged")).GetComponent<SpriteRenderer>();
				close = ((Component)component.FindChild("Close")).GetComponent<SpriteRenderer>();
				lockOn = ((Component)component.FindChild("LockOn")).GetComponent<SpriteRenderer>();
			}
			if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)lockedTarget) && Vector3.Distance(((Component)lockedTarget).transform.position, body.corePosition) > maxTrackingDistance)
			{
				lockedTarget = null;
			}
			if (!Util.HasEffectiveAuthority(((Component)this).gameObject))
			{
				return;
			}
			if (Object.op_Implicit((Object)(object)body))
			{
				if (!Object.op_Implicit((Object)(object)primary) && Object.op_Implicit((Object)(object)body.skillLocator))
				{
					primary = body.skillLocator.primary.defaultSkillDef;
				}
				if (!Object.op_Implicit((Object)(object)special) && Object.op_Implicit((Object)(object)body.skillLocator))
				{
					special = body.skillLocator.special.defaultSkillDef;
				}
				if (!Object.op_Implicit((Object)(object)cameraRigController))
				{
					foreach (CameraRigController readOnlyInstances in CameraRigController.readOnlyInstancesList)
					{
						if (Object.op_Implicit((Object)(object)readOnlyInstances.target) && (Object)(object)readOnlyInstances.target == (Object)(object)((Component)this).gameObject && !readOnlyInstances.hasOverride)
						{
							cameraRigController = readOnlyInstances;
							break;
						}
					}
				}
				if (Input.GetKeyDown(MainPlugin.lockTargetKeybind.Value) || player.GetButtonDown(103))
				{
					if (!Object.op_Implicit((Object)(object)lockedTarget))
					{
						if (Object.op_Implicit((Object)(object)target))
						{
							lockedTarget = target;
							AkSoundEngine.PostEvent(Sounds.Play_Sora_UI_Lock, ((Component)this).gameObject);
						}
					}
					else
					{
						lockedTarget = null;
						AkSoundEngine.PostEvent(Sounds.Play_Sora_UI_Unlock, ((Component)this).gameObject);
					}
					CallCmdLockTarget();
				}
				if (Object.op_Implicit((Object)(object)lockedTarget))
				{
					InputBankTest inputBank = body.inputBank;
					Vector3 val = ((Component)lockedTarget).transform.position - body.corePosition;
					inputBank.aimDirection = ((Vector3)(ref val)).normalized;
					if (Object.op_Implicit((Object)(object)lockedTarget.healthComponent) && !lockedTarget.healthComponent.alive)
					{
						sphereSearch.origin = ((Component)lockedTarget).transform.position;
						HurtBox val2 = sphereSearch.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(body.teamComponent.teamIndex)).OrderCandidatesByDistance()
							.FilterCandidatesByDistinctHurtBoxEntities()
							.FilterOutHurtBox(lockedTarget)
							.FilterOutDead()
							.GetHurtBoxes()
							.FirstOrDefault();
						if (Object.op_Implicit((Object)(object)val2))
						{
							lockedTarget = val2;
						}
						else
						{
							lockedTarget = null;
						}
					}
					if (indicator != null)
					{
						indicator.targetTransform = ((Component)lockedTarget).transform;
					}
					if (Object.op_Implicit((Object)(object)lockOn) && Object.op_Implicit((Object)(object)melee) && Object.op_Implicit((Object)(object)ranged) && Object.op_Implicit((Object)(object)brackets) && Object.op_Implicit((Object)(object)close))
					{
						melee.color = Color.clear;
						ranged.color = Color.clear;
						brackets.color = Color.clear;
						close.color = Color.clear;
						lockOn.color = new Color(1f, 0.5f, 0f);
					}
				}
				else
				{
					if (!Object.op_Implicit((Object)(object)cameraRigController) || cameraRigController.isCutscene)
					{
					}
					if (Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)indicator.visualizerInstance) && Object.op_Implicit((Object)(object)brackets) && Object.op_Implicit((Object)(object)melee) && Object.op_Implicit((Object)(object)ranged) && Object.op_Implicit((Object)(object)close) && Object.op_Implicit((Object)(object)lockOn))
					{
						lockOn.color = Color.clear;
						float num = Vector3.Distance(((Component)target).transform.position, body.corePosition);
						if (num > minMeleeDistance && num <= minCloseDistance)
						{
							melee.color = Color.clear;
							ranged.color = Color.clear;
							brackets.color = Color.clear;
							close.color = Color.white;
						}
						else if (num <= minMeleeDistance)
						{
							close.color = Color.clear;
							ranged.color = Color.clear;
							brackets.color = Color.white;
							melee.color = Color.white;
						}
						else
						{
							close.color = Color.clear;
							melee.color = Color.clear;
							brackets.color = Color.clear;
							ranged.color = Color.white;
						}
					}
					trackerUpdateStopwatch += Time.fixedDeltaTime;
					if (trackerUpdateStopwatch >= 1f / trackerUpdateFrequency)
					{
						trackerUpdateStopwatch -= 1f / trackerUpdateFrequency;
						Ray aimRay = default(Ray);
						((Ray)(ref aimRay))..ctor(body.inputBank.aimOrigin, body.inputBank.aimDirection);
						SearchForTarget(aimRay);
						if (indicator != null)
						{
							indicator.targetTransform = (Object.op_Implicit((Object)(object)target) ? ((Component)target).transform : null);
						}
					}
				}
			}
			if (!Object.op_Implicit((Object)(object)self.targetBodyObject) || !((Object)(object)self.targetBodyObject == (Object)(object)((Component)this).gameObject))
			{
				return;
			}
			if (Object.op_Implicit((Object)(object)health) && Object.op_Implicit((Object)(object)mpBar) && Object.op_Implicit((Object)(object)lv) && Object.op_Implicit((Object)(object)bars) && Object.op_Implicit((Object)(object)uiSelection))
			{
				if (Object.op_Implicit((Object)(object)hpIcon) && Object.op_Implicit((Object)(object)healthBar))
				{
					((Graphic)hpIcon).color = ((Graphic)healthBar).color;
				}
				if (Object.op_Implicit((Object)(object)mpIcon) && Object.op_Implicit((Object)(object)barImage))
				{
					((Graphic)mpIcon).color = ((Graphic)barImage).color;
				}
				mpValue = Mathf.Clamp((float)Math.Round((decimal)mpValue, 2), 0f, 1f);
				if (((ButtonState)(ref body.inputBank.skill4)).justPressed && !PauseManager.isPaused && (inRecovery || mpValue < magicCosts[currentMagic]))
				{
					AkSoundEngine.PostEvent(Sounds.Play_Sora_UI_Fail, ((Component)this).gameObject);
				}
				if (inRecovery && !PauseManager.isPaused)
				{
					mpValue = 1f - recoveryStopwatch / recoveryDuration;
					recoveryStopwatch += Time.deltaTime;
					if (recoveryStopwatch >= recoveryDuration)
					{
						Recover();
					}
				}
				if (magicSelections != null && magicSelections.Length != 0 && !PauseManager.isPaused)
				{
					bool flag = Input.GetAxis("Mouse ScrollWheel") > 0f || player.GetButtonDown(100);
					if (!body.isPlayerControlled && currentMagic != 0)
					{
						flag = RoR2Application.rng.nextBool;
					}
					bool flag2 = Input.GetAxis("Mouse ScrollWheel") < 0f || player.GetButtonDown(102);
					if (!body.isPlayerControlled && currentMagic != 7)
					{
						flag2 = RoR2Application.rng.nextBool;
					}
					if (flag || flag2)
					{
						if (flag)
						{
							if (currentMagic != 0)
							{
								magicSelections[currentMagic].stopwatch = 0f;
								currentMagic--;
								magicSelections[currentMagic].stopwatch = 0f;
								AkSoundEngine.PostEvent(Sounds.Play_Sora_UI_Select, ((Component)this).gameObject);
							}
						}
						else if (flag2 && currentMagic != 7)
						{
							magicSelections[currentMagic].stopwatch = 0f;
							currentMagic++;
							magicSelections[currentMagic].stopwatch = 0f;
							AkSoundEngine.PostEvent(Sounds.Play_Sora_UI_Select, ((Component)this).gameObject);
						}
						if (Object.op_Implicit((Object)(object)special))
						{
							special.icon = magicIcons[currentMagic];
						}
					}
					Color val3 = default(Color);
					Color val4 = default(Color);
					Color val5 = default(Color);
					Vector3 val8 = default(Vector3);
					Vector3 val9 = default(Vector3);
					for (int i = 0; i < magicSelections.Length; i++)
					{
						magicSelections[i].active = i == currentMagic;
						bool active = magicSelections[i].active;
						float y = magicSelections[i].transform.localPosition.y;
						magicSelections[i].stopwatch += Time.fixedDeltaTime;
						float num2 = curve.Evaluate(magicSelections[i].stopwatch / 0.35f);
						((Color)(ref val3))..ctor(0.1226415f, 0.1226415f, 0.1226415f, 0f);
						((Color)(ref val4))..ctor(0.1226415f, 0.1226415f, 0.1226415f, 0.6f);
						((Color)(ref val5))..ctor(0.75f, 0f, 0f, 0.666f);
						bool flag3 = inRecovery || (mpValue < magicCosts[i] && i != 7);
						Color val6 = (active ? val4 : val3);
						Color val7 = (active ? val3 : val4);
						((Graphic)magicSelections[i].selection).color = (flag3 ? val5 : Color.Lerp(val6, val7, num2));
						((Vector3)(ref val8))..ctor(110f, y);
						((Vector3)(ref val9))..ctor(135f, y);
						Vector3 val10 = (active ? val9 : val8);
						Vector3 val11 = (active ? val8 : val9);
						magicSelections[i].transform.localPosition = Vector3.Lerp(val10, val11, num2);
						Vector3 val12 = Vector3.one * 1.1f;
						Vector3 one = Vector3.one;
						Vector3 val13 = (active ? one : val12);
						Vector3 val14 = (active ? val12 : one);
						magicSelections[i].transform.localScale = Vector3.Lerp(val13, val14, num2);
					}
				}
				if (health.localPosition != new Vector3(70f, 33f))
				{
					health.localPosition = Vector2.op_Implicit(new Vector2(70f, 33f));
				}
				if (lv.localPosition != new Vector3(70f, 33f))
				{
					lv.localPosition = Vector2.op_Implicit(new Vector2(70f, 53f));
				}
				if (mpBar.transform.localPosition != new Vector3(70f, 3f))
				{
					mpBar.transform.localPosition = Vector2.op_Implicit(new Vector2(70f, 3f));
				}
				if (bars.localPosition != new Vector3(40f, 40f))
				{
					bars.localPosition = Vector2.op_Implicit(new Vector2(40f, 40f));
				}
				if (uiSelection.transform.localPosition != new Vector3(-272f, 470f))
				{
					uiSelection.transform.localPosition = Vector2.op_Implicit(new Vector2(-272f, 470f));
				}
			}
			if (Object.op_Implicit((Object)(object)barImage) && Object.op_Implicit((Object)(object)currentMP))
			{
				barImage.fillAmount = mpValue;
				((TMP_Text)currentMP).text = Mathf.RoundToInt(mpValue * 100f).ToString();
			}
			if (!Object.op_Implicit((Object)(object)self.mainUIPanel) || Object.op_Implicit((Object)(object)mpBar) || !Object.op_Implicit((Object)(object)self.mainUIPanel.transform.GetChild(2)))
			{
				return;
			}
			Transform child = self.mainUIPanel.transform.GetChild(2);
			if (Object.op_Implicit((Object)(object)child))
			{
				Transform child2 = child.GetChild(2);
				if (Object.op_Implicit((Object)(object)child2) && !Object.op_Implicit((Object)(object)uiSelection))
				{
					uiSelection = Object.Instantiate<GameObject>(Assets.Load<GameObject>("MagicUI"), child2);
					uiSelection.transform.localPosition = Vector3.zero;
					ChildLocator component2 = uiSelection.GetComponent<ChildLocator>();
					magicSelections = new MagicSelection[8]
					{
						new MagicSelection(component2.FindChild("Magic1")),
						new MagicSelection(component2.FindChild("Magic2")),
						new MagicSelection(component2.FindChild("Magic3")),
						new MagicSelection(component2.FindChild("Magic4")),
						new MagicSelection(component2.FindChild("Magic5")),
						new MagicSelection(component2.FindChild("Magic6")),
						new MagicSelection(component2.FindChild("Magic7")),
						new MagicSelection(component2.FindChild("Magic8"))
					};
				}
			}
			HealthBar componentInChildren = self.mainUIPanel.GetComponentInChildren<HealthBar>();
			if (Object.op_Implicit((Object)(object)componentInChildren) && Object.op_Implicit((Object)(object)((Component)componentInChildren).gameObject))
			{
				health = ((Component)componentInChildren).transform;
				lv = ((Component)componentInChildren).transform.parent.GetChild(0);
				VerticalLayoutGroup componentInParent = ((Component)componentInChildren).GetComponentInParent<VerticalLayoutGroup>();
				((HorizontalOrVerticalLayoutGroup)componentInParent).childControlWidth = false;
				((HorizontalOrVerticalLayoutGroup)componentInParent).childControlHeight = false;
				((Component)componentInChildren).GetComponent<RectTransform>().sizeDelta = new Vector2(422f, 15.2f);
				Image[] componentsInChildren = ((Component)componentInChildren).gameObject.GetComponentsInChildren<Image>();
				if (componentsInChildren.Length >= 5)
				{
					healthBar = ((Component)health).GetComponentsInChildren<Image>()[3];
					AddBar(((Component)componentInChildren).gameObject);
				}
			}
		}

		private void AddBar(GameObject healthBar)
		{
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			mpBar = Object.Instantiate<GameObject>(healthBar, healthBar.transform.parent);
			bars = Object.Instantiate<GameObject>(Assets.Load<GameObject>("Bars"), healthBar.transform.parent).transform;
			bars.SetAsFirstSibling();
			if (Object.op_Implicit((Object)(object)body))
			{
				ChildLocator component = ((Component)bars).GetComponent<ChildLocator>();
				mpIcon = ((Component)component.FindChild("mpicon")).GetComponent<Image>();
				((Graphic)mpIcon).color = mpColor;
				hpIcon = ((Component)component.FindChild("hpicon")).GetComponent<Image>();
				portrait = ((Component)component.FindChild("portrait")).GetComponent<Image>();
				switch (body.skinIndex)
				{
				case 1u:
					portrait.sprite = Prefabs.ValorUI;
					break;
				case 2u:
					portrait.sprite = Prefabs.WisdomUI;
					break;
				case 3u:
					portrait.sprite = Prefabs.LimitUI;
					break;
				case 4u:
					portrait.sprite = Prefabs.MasterUI;
					break;
				case 5u:
					portrait.sprite = Prefabs.FinalUI;
					break;
				case 6u:
					portrait.sprite = Prefabs.AntiUI;
					break;
				case 7u:
					portrait.sprite = Prefabs.ChristmasUI;
					break;
				case 8u:
					portrait.sprite = Prefabs.HalloweenUI;
					break;
				case 9u:
					portrait.sprite = Prefabs.RikuUI;
					break;
				}
			}
			((Object)mpBar).name = "MPBar";
			Object.Destroy((Object)(object)mpBar.GetComponent<HealthBar>());
			TextMeshProUGUI[] componentsInChildren = mpBar.GetComponentsInChildren<TextMeshProUGUI>();
			for (int i = 0; i < componentsInChildren.Length; i++)
			{
				string name = ((Object)((Component)componentsInChildren[i]).gameObject).name;
				if (name == "CurrentHealthText")
				{
					currentMP = componentsInChildren[i];
					((TMP_Text)currentMP).text = "100";
				}
				if (name == "FullHealthText")
				{
					((TMP_Text)componentsInChildren[i]).text = "100";
				}
			}
			Image[] componentsInChildren2 = mpBar.GetComponentsInChildren<Image>();
			for (int j = 0; j < componentsInChildren2.Length; j++)
			{
				if (Object.op_Implicit((Object)(object)componentsInChildren2[j]) && Object.op_Implicit((Object)(object)((Component)componentsInChildren2[j]).gameObject))
				{
					if ((Object)(object)componentsInChildren2[j] != (Object)(object)componentsInChildren2[3] && (Object)(object)componentsInChildren2[j] != (Object)(object)componentsInChildren2[0])
					{
						Object.Destroy((Object)(object)((Component)componentsInChildren2[j]).gameObject);
					}
					if ((Object)(object)componentsInChildren2[j] == (Object)(object)componentsInChildren2[3])
					{
						barImage = componentsInChildren2[j];
						((Graphic)barImage).color = mpColor;
						barImage.type = (Type)3;
						barImage.fillMethod = (FillMethod)0;
						barImage.fillCenter = false;
					}
				}
			}
		}

		private void UNetVersion()
		{
		}

		protected static void InvokeCmdCmdUpdateAnimatorParameters(NetworkBehaviour obj, NetworkReader reader)
		{
			if (!NetworkServer.active)
			{
				Debug.LogError((object)"Command CmdUpdateAnimatorParameters called on client.");
			}
			else
			{
				((SoraBehaviour)(object)obj).CmdUpdateAnimatorParameters(GeneratedNetworkCode._ReadArrayString_None(reader), GeneratedNetworkCode._ReadArraySingle_None(reader));
			}
		}

		protected static void InvokeCmdCmdLockTarget(NetworkBehaviour obj, NetworkReader reader)
		{
			if (!NetworkServer.active)
			{
				Debug.LogError((object)"Command CmdLockTarget called on client.");
			}
			else
			{
				((SoraBehaviour)(object)obj).CmdLockTarget();
			}
		}

		public void CallCmdUpdateAnimatorParameters(string[] parameters, float[] values)
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Expected O, but got Unknown
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			if (!NetworkClient.active)
			{
				Debug.LogError((object)"Command function CmdUpdateAnimatorParameters called on server.");
				return;
			}
			if (((NetworkBehaviour)this).isServer)
			{
				CmdUpdateAnimatorParameters(parameters, values);
				return;
			}
			NetworkWriter val = new NetworkWriter();
			val.Write((short)0);
			val.Write((short)5);
			val.WritePackedUInt32((uint)kCmdCmdUpdateAnimatorParameters);
			val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
			GeneratedNetworkCode._WriteArrayString_None(val, parameters);
			GeneratedNetworkCode._WriteArraySingle_None(val, values);
			((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdUpdateAnimatorParameters");
		}

		public void CallCmdLockTarget()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			if (!NetworkClient.active)
			{
				Debug.LogError((object)"Command function CmdLockTarget called on server.");
				return;
			}
			if (((NetworkBehaviour)this).isServer)
			{
				CmdLockTarget();
				return;
			}
			NetworkWriter val = new NetworkWriter();
			val.Write((short)0);
			val.Write((short)5);
			val.WritePackedUInt32((uint)kCmdCmdLockTarget);
			val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
			((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdLockTarget");
		}

		protected static void InvokeRpcRpcUpdateAnimatorParameters(NetworkBehaviour obj, NetworkReader reader)
		{
			if (!NetworkClient.active)
			{
				Debug.LogError((object)"RPC RpcUpdateAnimatorParameters called on server.");
			}
			else
			{
				((SoraBehaviour)(object)obj).RpcUpdateAnimatorParameters(GeneratedNetworkCode._ReadArrayString_None(reader), GeneratedNetworkCode._ReadArraySingle_None(reader));
			}
		}

		protected static void InvokeRpcRpcLockTarget(NetworkBehaviour obj, NetworkReader reader)
		{
			if (!NetworkClient.active)
			{
				Debug.LogError((object)"RPC RpcLockTarget called on server.");
			}
			else
			{
				((SoraBehaviour)(object)obj).RpcLockTarget();
			}
		}

		protected static void InvokeRpcRpcAddMP(NetworkBehaviour obj, NetworkReader reader)
		{
			if (!NetworkClient.active)
			{
				Debug.LogError((object)"RPC RpcAddMP called on server.");
			}
			else
			{
				((SoraBehaviour)(object)obj).RpcAddMP(reader.ReadSingle());
			}
		}

		public void CallRpcUpdateAnimatorParameters(string[] parameters, float[] values)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			if (!NetworkServer.active)
			{
				Debug.LogError((object)"RPC Function RpcUpdateAnimatorParameters called on client.");
				return;
			}
			NetworkWriter val = new NetworkWriter();
			val.Write((short)0);
			val.Write((short)2);
			val.WritePackedUInt32((uint)kRpcRpcUpdateAnimatorParameters);
			val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
			GeneratedNetworkCode._WriteArrayString_None(val, parameters);
			GeneratedNetworkCode._WriteArraySingle_None(val, values);
			((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcUpdateAnimatorParameters");
		}

		public void CallRpcLockTarget()
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			if (!NetworkServer.active)
			{
				Debug.LogError((object)"RPC Function RpcLockTarget called on client.");
				return;
			}
			NetworkWriter val = new NetworkWriter();
			val.Write((short)0);
			val.Write((short)2);
			val.WritePackedUInt32((uint)kRpcRpcLockTarget);
			val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
			((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcLockTarget");
		}

		public void CallRpcAddMP(float value)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			if (!NetworkServer.active)
			{
				Debug.LogError((object)"RPC Function RpcAddMP called on client.");
				return;
			}
			NetworkWriter val = new NetworkWriter();
			val.Write((short)0);
			val.Write((short)2);
			val.WritePackedUInt32((uint)kRpcRpcAddMP);
			val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
			val.Write(value);
			((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcAddMP");
		}

		static SoraBehaviour()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Expected O, but got Unknown
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Expected O, but got Unknown
			kCmdCmdUpdateAnimatorParameters = -2063375988;
			NetworkBehaviour.RegisterCommandDelegate(typeof(SoraBehaviour), kCmdCmdUpdateAnimatorParameters, new CmdDelegate(InvokeCmdCmdUpdateAnimatorParameters));
			kCmdCmdLockTarget = 828092110;
			NetworkBehaviour.RegisterCommandDelegate(typeof(SoraBehaviour), kCmdCmdLockTarget, new CmdDelegate(InvokeCmdCmdLockTarget));
			kRpcRpcUpdateAnimatorParameters = 1954079586;
			NetworkBehaviour.RegisterRpcDelegate(typeof(SoraBehaviour), kRpcRpcUpdateAnimatorParameters, new CmdDelegate(InvokeRpcRpcUpdateAnimatorParameters));
			kRpcRpcLockTarget = -1308131548;
			NetworkBehaviour.RegisterRpcDelegate(typeof(SoraBehaviour), kRpcRpcLockTarget, new CmdDelegate(InvokeRpcRpcLockTarget));
			kRpcRpcAddMP = -548175748;
			NetworkBehaviour.RegisterRpcDelegate(typeof(SoraBehaviour), kRpcRpcAddMP, new CmdDelegate(InvokeRpcRpcAddMP));
			NetworkCRC.RegisterBehaviour("SoraBehaviour", 0);
		}

		public override bool OnSerialize(NetworkWriter writer, bool forceAll)
		{
			bool result = default(bool);
			return result;
		}

		public override void OnDeserialize(NetworkReader reader, bool initialState)
		{
		}
	}
	internal class Hook
	{
		internal static void Hooks()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
			GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal;
		}

		private static void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport)
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Invalid comparison between Unknown and I4
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Invalid comparison between Unknown and I4
			if (damageReport.damageInfo != null && Object.op_Implicit((Object)(object)damageReport.damageInfo.attacker))
			{
				SoraBehaviour component = damageReport.damageInfo.attacker.GetComponent<SoraBehaviour>();
				if (Object.op_Implicit((Object)(object)component) && (int)damageReport.damageInfo.damageType == 262144)
				{
					damageReport.damageInfo.damageType = (DamageType)0;
					component.CallRpcAddMP(0.07f);
				}
				if (Object.op_Implicit((Object)(object)damageReport.victim) && Object.op_Implicit((Object)(object)damageReport.attackerBody) && Object.op_Implicit((Object)(object)component) && (int)damageReport.damageInfo.damageType == 524320)
				{
					GameObject val = Object.Instantiate<GameObject>(Prefabs.mpOrb, ((Component)damageReport.victim).transform.position, Random.rotation);
					val.GetComponent<TeamFilter>().teamIndex = damageReport.attackerBody.teamComponent.teamIndex;
					val.GetComponentInChildren<GravitatePickup>().gravitateTarget = damageReport.attackerBody.coreTransform;
					NetworkServer.Spawn(val);
				}
			}
		}

		private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
		{
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Expected O, but got Unknown
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0213: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Invalid comparison between Unknown and I4
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)damageInfo.attacker))
			{
				CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
				if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.healthComponent) && self.body.HasBuff(Prefabs.reflect))
				{
					DamageInfo val = new DamageInfo
					{
						position = component.corePosition,
						damage = damageInfo.damage,
						crit = self.body.RollCrit(),
						rejected = false,
						canRejectForce = damageInfo.canRejectForce
					};
					Vector3 force = damageInfo.force;
					Vector3 val2 = self.body.corePosition - component.corePosition;
					val.force = force + ((Vector3)(ref val2)).normalized;
					val.attacker = ((Component)self).gameObject;
					val.procCoefficient = damageInfo.procCoefficient;
					val.damageColorIndex = damageInfo.damageColorIndex;
					val.damageType = (DamageType)(damageInfo.damageType | 0x20);
					val.procChainMask = damageInfo.procChainMask;
					DamageInfo val3 = val;
					component.healthComponent.TakeDamage(val3);
					damageInfo.rejected = true;
					EffectManager.SimpleEffect(Prefabs.reflectProc, self.body.corePosition, Quaternion.identity, true);
					if (Vector3.Distance(self.body.footPosition, component.footPosition) <= 6f)
					{
						float num = 0f;
						RigidbodyMotor component2 = ((Component)component).GetComponent<RigidbodyMotor>();
						if (Object.op_Implicit((Object)(object)component.characterMotor))
						{
							num = component.characterMotor.mass;
						}
						else if (Object.op_Implicit((Object)(object)component2))
						{
							num = component2.mass;
						}
						HealthComponent healthComponent = component.healthComponent;
						val2 = component.footPosition - self.body.footPosition;
						healthComponent.TakeDamageForce(((Vector3)(ref val2)).normalized * num * 22f, true, false);
					}
				}
				SoraBehaviour component3 = damageInfo.attacker.GetComponent<SoraBehaviour>();
				if (Object.op_Implicit((Object)(object)component3) && component3.inRecovery && (int)damageInfo.damageType == 64 && !Object.op_Implicit((Object)(object)self.body.characterMotor))
				{
					damageInfo.force = Vector3.zero;
					if (RoR2Application.rng.nextBool)
					{
						SetStateOnHurt.SetStunOnObject(((Component)self).gameObject, 0.5f);
					}
				}
			}
			orig.Invoke(self, damageInfo);
		}
	}
	internal class ItemDisplays
	{
		internal static ItemDisplayRuleSet itemDisplayRuleSet;

		internal static List<KeyAssetRuleGroup> itemDisplayRules;

		private static Dictionary<Object, GameObject> itemDisplayPrefabs = new Dictionary<Object, GameObject>();

		private static Vector3 vec = Vector3.one;

		internal static void PopulateDisplays()
		{
			PopulateFromBody("Commando");
			PopulateFromBody("Croco");
			PopulateFromBody("Mage");
		}

		private static void PopulateFromBody(string bodyName)
		{
			ItemDisplayRuleSet val = ((Component)Prefabs.Load<GameObject>("Prefabs/CharacterBodies/" + bodyName + "Body").GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>().itemDisplayRuleSet;
			KeyAssetRuleGroup[] keyAssetRuleGroups = val.keyAssetRuleGroups;
			for (int i = 0; i < keyAssetRuleGroups.Length; i++)
			{
				ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules;
				for (int j = 0; j < rules.Length; j++)
				{
					GameObject followerPrefab = rules[j].followerPrefab;
					if (Object.op_Implicit((Object)(object)followerPrefab))
					{
						Object keyAsset = keyAssetRuleGroups[i].keyAsset;
						ItemDef val2 = (ItemDef)(object)((keyAsset is ItemDef) ? keyAsset : null);
						Object keyAsset2 = keyAssetRuleGroups[i].keyAsset;
						EquipmentDef val3 = (EquipmentDef)(object)((keyAsset2 is EquipmentDef) ? keyAsset2 : null);
						if ((Object)(object)val2 != (Object)null && !itemDisplayPrefabs.ContainsKey((Object)(object)val2))
						{
							itemDisplayPrefabs.Add((Object)(object)val2, followerPrefab);
						}
						if ((Object)(object)val3 != (Object)null && !itemDisplayPrefabs.ContainsKey((Object)(object)val3))
						{
							itemDisplayPrefabs.Add((Object)(object)val3, followerPrefab);
						}
					}
				}
			}
		}

		public static void RegisterDisplays()
		{
			itemDisplayRuleSet = ScriptableObject.CreateInstance<ItemDisplayRuleSet>();
			((Object)itemDisplayRuleSet).name = "SoraIDRS";
			GameObject characterPrefab = MainPlugin.characterPrefab;
			GameObject gameObject = ((Component)characterPrefab.GetComponentInChildren<ModelLocator>().modelTransform).gameObject;
			CharacterModel component = gameObject.GetComponent<CharacterModel>();
			component.itemDisplayRuleSet = itemDisplayRuleSet;
		}

		public static void SetIDRS()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0275: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02df: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Unknown result type (might be due to invalid IL or missing references)
			//IL_031a: Unknown result type (might be due to invalid IL or missing references)
			//IL_031f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0335: Unknown result type (might be due to invalid IL or missing references)
			//IL_033a: Unknown result type (might be due to invalid IL or missing references)
			//IL_033f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0355: Unknown result type (might be due to invalid IL or missing references)
			//IL_035a: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_037a: Unknown result type (might be due to invalid IL or missing references)
			//IL_037f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0395: Unknown result type (might be due to invalid IL or missing references)
			//IL_039a: Unknown result type (might be due to invalid IL or missing references)
			//IL_039f: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Unknown result type (might be due to invalid IL or missing references)
			//IL_03df: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_041a: Unknown result type (might be due to invalid IL or missing references)
			//IL_041f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0435: Unknown result type (might be due to invalid IL or missing references)
			//IL_043a: Unknown result type (might be due to invalid IL or missing references)
			//IL_043f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_045f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Unknown result type (might be due to invalid IL or missing references)
			//IL_047a: Unknown result type (might be due to invalid IL or missing references)
			//IL_047f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0495: Unknown result type (might be due to invalid IL or missing references)
			//IL_049a: Unknown result type (might be due to invalid IL or missing references)
			//IL_049f: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04da: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: Unknown result type (might be due to invalid IL or missing references)
			//IL_050e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0513: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0533: Unknown result type (might be due to invalid IL or missing references)
			//IL_0549: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0553: Unknown result type (might be due to invalid IL or missing references)
			//IL_0569: Unknown result type (might be due to invalid IL or missing references)
			//IL_056e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0573: Unknown result type (might be due to invalid IL or missing references)
			//IL_0589: Unknown result type (might be due to invalid IL or missing references)
			//IL_058e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0593: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0609: Unknown result type (might be due to invalid IL or missing references)
			//IL_060e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0613: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Unknown result type (might be due to invalid IL or missing references)
			//IL_062e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0633: Unknown result type (might be due to invalid IL or missing references)
			//IL_0649: Unknown result type (might be due to invalid IL or missing references)
			//IL_064e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0653: Unknown result type (might be due to invalid IL or missing references)
			//IL_0669: Unknown result type (might be due to invalid IL or missing references)
			//IL_066e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0673: Unknown result type (might be due to invalid IL or missing references)
			//IL_0689: Unknown result type (might be due to invalid IL or missing references)
			//IL_068e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0693: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0709: Unknown result type (might be due to invalid IL or missing references)
			//IL_070e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0713: Unknown result type (might be due to invalid IL or missing references)
			//IL_0729: Unknown result type (might be due to invalid IL or missing references)
			//IL_072e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0733: Unknown result type (might be due to invalid IL or missing references)
			//IL_0749: Unknown result type (might be due to invalid IL or missing references)
			//IL_074e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0769: Unknown result type (might be due to invalid IL or missing references)
			//IL_076e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0773: Unknown result type (might be due to invalid IL or missing references)
			//IL_0789: Unknown result type (might be due to invalid IL or missing references)
			//IL_078e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0793: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0802: Unknown result type (might be due to invalid IL or missing references)
			//IL_0807: Unknown result type (might be due to invalid IL or missing references)
			//IL_081d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0822: Unknown result type (might be due to invalid IL or missing references)
			//IL_0827: Unknown result type (might be due to invalid IL or missing references)
			//IL_083d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0842: Unknown result type (might be due to invalid IL or missing references)
			//IL_0847: Unknown result type (might be due to invalid IL or missing references)
			//IL_085d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0862: Unknown result type (might be due to invalid IL or missing references)
			//IL_0867: Unknown result type (might be due to invalid IL or missing references)
			//IL_087d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0882: Unknown result type (might be due to invalid IL or missing references)
			//IL_0887: Unknown result type (might be due to invalid IL or missing references)
			//IL_089d: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0902: Unknown result type (might be due to invalid IL or missing references)
			//IL_0907: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0922: Unknown result type (might be due to invalid IL or missing references)
			//IL_0927: Unknown result type (might be due to invalid IL or missing references)
			//IL_093d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0942: Unknown result type (might be due to invalid IL or missing references)
			//IL_0947: Unknown result type (might be due to invalid IL or missing references)
			//IL_095d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0962: Unknown result type (might be due to invalid IL or missing references)
			//IL_0967: Unknown result type (might be due to invalid IL or missing references)
			//IL_097d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0982: Unknown result type (might be due to invalid IL or missing references)
			//IL_0987: Unknown result type (might be due to invalid IL or missing references)
			//IL_099d: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a02: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a1d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a22: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a42: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a62: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a67: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0abb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0adb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0afb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b56: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bdb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bfb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c56: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cdb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cfb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d56: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ddb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e56: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eb1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ebb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ed1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ed6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0edb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0efb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f25: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f2a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f45: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f4a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f4f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f65: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f6a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f6f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f85: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f8f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fa5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0faa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0faf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fc5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fca: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fcf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fef: Unknown result type (might be due to invalid IL or missing references)
			//IL_1005: Unknown result type (might be due to invalid IL or missing references)
			//IL_100a: Unknown result type (might be due to invalid IL or missing references)
			//IL_100f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1025: Unknown result type (might be due to invalid IL or missing references)
			//IL_102a: Unknown result type (might be due to invalid IL or missing references)
			//IL_102f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1045: Unknown result type (might be due to invalid IL or missing references)
			//IL_104a: Unknown result type (might be due to invalid IL or missing references)
			//IL_104f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1065: Unknown result type (might be due to invalid IL or missing references)
			//IL_106a: Unknown result type (might be due to invalid IL or missing references)
			//IL_106f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1085: Unknown result type (might be due to invalid IL or missing references)
			//IL_108a: Unknown result type (might be due to invalid IL or missing references)
			//IL_108f: Unknown result type (might be due to invalid IL or missing references)
			//IL_10a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_10aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_10af: Unknown result type (might be due to invalid IL or missing references)
			//IL_10c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_10ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_10cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_10e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_10ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_10ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_1105: Unknown result type (might be due to invalid IL or missing references)
			//IL_110a: Unknown result type (might be due to invalid IL or missing references)
			//IL_110f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1125: Unknown result type (might be due to invalid IL or missing references)
			//IL_112a: Unknown result type (might be due to invalid IL or missing references)
			//IL_112f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1145: Unknown result type (might be due to invalid IL or missing references)
			//IL_114a: Unknown result type (might be due to invalid IL or missing references)
			//IL_114f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1165: Unknown result type (might be due to invalid IL or missing references)
			//IL_116a: Unknown result type (might be due to invalid IL or missing references)
			//IL_116f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1185: Unknown result type (might be due to invalid IL or missing references)
			//IL_118a: Unknown result type (might be due to invalid IL or missing references)
			//IL_118f: Unknown result type