Decompiled source of ValheimVRM v1.0.2

BepInEx/plugins/ValheimVRM.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using BepInEx;
using HarmonyLib;
using UniGLTF;
using UniVRM10;
using UnityEngine;
using UnityEngine.SceneManagement;
using VRM;
using VRMShaders;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")]
[assembly: AssemblyCompany("ValheimVRM")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.3.10.0")]
[assembly: AssemblyInformationalVersion("1.3.10+a304cbd6f74e97de44b3874682edc27f4209119b")]
[assembly: AssemblyProduct("ValheimVRM")]
[assembly: AssemblyTitle("ValheimVRM")]
[assembly: AssemblyVersion("1.3.10.0")]
namespace ValheimVRM;

public static class Commands
{
	public static readonly ConsoleCommand ReloadSettings = new ConsoleCommand("reload_settings", "reload VRM settings for your character", (ConsoleEvent)delegate(ConsoleEventArgs args)
	{
		string text = VrmManager.PlayerToName[Player.m_localPlayer];
		if (VrmManager.VrmDic.ContainsKey(text))
		{
			Settings.AddSettingsFromFile(text, VrmManager.VrmDic[text].Source == VRM.SourceType.Shared);
			VrmManager.VrmDic[text].RecalculateSettingsHash();
			args.Context.AddString("Settings for " + text + " were reloaded");
			((Component)Player.m_localPlayer).GetComponent<VrmController>().ShareVrm(delay: false);
		}
	}, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false);

	public static readonly ConsoleCommand ReloadGlobalSettings = new ConsoleCommand("reload_global_settings", "reload global VRM settings", (ConsoleEvent)delegate(ConsoleEventArgs args)
	{
		Settings.ReloadGlobalSettings();
		args.Context.AddString("Global settings were reloaded");
	}, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false);

	public static int Trigger()
	{
		return 1;
	}
}
public class CoroutineHelper : MonoBehaviour
{
	private static CoroutineHelper _instance;

	public static CoroutineHelper Instance
	{
		get
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_instance == (Object)null)
			{
				_instance = new GameObject("CoroutineHelper").AddComponent<CoroutineHelper>();
			}
			return _instance;
		}
	}

	private void Awake()
	{
		if ((Object)(object)_instance == (Object)null)
		{
			_instance = this;
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
		}
		else if ((Object)(object)_instance != (Object)(object)this)
		{
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}
	}
}
[BepInPlugin("com.yoship1639.plugins.valheimvrm", "ValheimVRM", "1.3.10.0")]
[BepInProcess("valheim.exe")]
public class MainPlugin : BaseUnityPlugin
{
	public const string PluginGuid = "com.yoship1639.plugins.valheimvrm";

	public const string PluginName = "ValheimVRM";

	public const string PluginVersion = "1.3.10.0";

	private static Harmony _harmony = new Harmony("com.yoship1639.plugins.valheimvrm.patch");

	private void Awake()
	{
		CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
		Settings.ReloadGlobalSettings();
		Settings.AddSettingsFromFile("___Default", shared: false);
		PatchFejdStartup.Apply(_harmony);
	}

	internal static void PatchAll()
	{
		if (Settings.globalSettings.EnableProfileCode)
		{
			PatchAllUpdateMethods.ApplyPatches(_harmony);
		}
		_harmony.PatchAll();
		VRMShaders.Initialize();
	}
}
public class MToonColorSync : MonoBehaviour
{
	private class MatColor
	{
		public Material mat;

		public Color color;

		public Color shadeColor;

		public Color emission;

		public bool hasColor;

		public bool hasShadeColor;

		public bool hasEmission;
	}

	private int _SunColor;

	private int _AmbientColor;

	private List<MatColor> matColors = new List<MatColor>();

	private void Awake()
	{
		_SunColor = Shader.PropertyToID("_SunColor");
		_AmbientColor = Shader.PropertyToID("_AmbientColor");
	}

	public void Setup(GameObject vrm)
	{
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: 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_00b4: 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_00f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
		matColors.Clear();
		SkinnedMeshRenderer[] componentsInChildren = vrm.GetComponentsInChildren<SkinnedMeshRenderer>();
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			Material[] materials = ((Renderer)componentsInChildren[i]).materials;
			foreach (Material mat in materials)
			{
				if (!matColors.Exists((MatColor m) => (Object)(object)m.mat == (Object)(object)mat))
				{
					matColors.Add(new MatColor
					{
						mat = mat,
						color = (mat.HasProperty("_Color") ? mat.GetColor("_Color") : Color.white),
						shadeColor = (mat.HasProperty("_ShadeColor") ? mat.GetColor("_ShadeColor") : Color.white),
						emission = (mat.HasProperty("_EmissionColor") ? mat.GetColor("_EmissionColor") : Color.black),
						hasColor = mat.HasProperty("_Color"),
						hasShadeColor = mat.HasProperty("_ShadeColor"),
						hasEmission = mat.HasProperty("_EmissionColor")
					});
				}
			}
		}
	}

	private void Update()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: 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_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: 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_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_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_0098: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: 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)
		//IL_00a3: 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_0090: 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_00d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0116: Unknown result type (might be due to invalid IL or missing references)
		//IL_0130: Unknown result type (might be due to invalid IL or missing references)
		Color globalColor = Shader.GetGlobalColor(_SunColor);
		Color globalColor2 = Shader.GetGlobalColor(_AmbientColor);
		Color val = globalColor + globalColor2;
		if (((Color)(ref val)).maxColorComponent > 0.7f)
		{
			val /= 0.3f + ((Color)(ref val)).maxColorComponent;
		}
		foreach (MatColor matColor in matColors)
		{
			Color val2 = matColor.color * val;
			val2.a = matColor.color.a;
			if (((Color)(ref val2)).maxColorComponent > 1f)
			{
				val2 /= ((Color)(ref val2)).maxColorComponent;
			}
			Color val3 = matColor.shadeColor * val;
			val3.a = matColor.shadeColor.a;
			if (((Color)(ref val3)).maxColorComponent > 1f)
			{
				val3 /= ((Color)(ref val3)).maxColorComponent;
			}
			Color val4 = matColor.emission * ((Color)(ref val)).grayscale;
			if (matColor.hasColor)
			{
				matColor.mat.SetColor("_Color", val2);
			}
			if (matColor.hasShadeColor)
			{
				matColor.mat.SetColor("_ShadeColor", val3);
			}
			if (matColor.hasEmission)
			{
				matColor.mat.SetColor("_EmissionColor", val4);
			}
		}
	}
}
internal static class PatchFejdStartup
{
	public static void Apply(Harmony harmony)
	{
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Expected O, but got Unknown
		MethodInfo method = typeof(FejdStartup).GetMethod("Awake", BindingFlags.Instance | BindingFlags.NonPublic);
		if (method == null)
		{
			Debug.LogError((object)"Failed to find Awake method in FejdStartup.");
			return;
		}
		HarmonyMethod val = new HarmonyMethod(typeof(PatchFejdStartup), "Postfix", (Type[])null);
		harmony.Patch((MethodBase)method, (HarmonyMethod)null, val, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
	}

	private static void Postfix()
	{
		MainPlugin.PatchAll();
	}
}
public static class PatchAllUpdateMethods
{
	public class GenericPState
	{
		public Stopwatch Stopwatch { get; set; }

		public MethodBase CallingMethod { get; set; }
	}

	private static Dictionary<string, List<long>> methodCallTimestamps = new Dictionary<string, List<long>>();

	public static void ApplyPatches(Harmony harmony)
	{
		Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
		string[] assemblyFilesInPath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories);
		foreach (Assembly item in assemblies.Where((Assembly a) => IsAssemblyInDirectory(a, assemblyFilesInPath)).ToList())
		{
			try
			{
				if (item.FullName.StartsWith("UnityEngine") || item.FullName.StartsWith("System") || item.FullName.StartsWith("mscorlib") || item.FullName.StartsWith("netstandard") || item.FullName.StartsWith("Microsoft") || item.FullName.StartsWith("Editor") || item.FullName.StartsWith("LuxParticles") || item.FullName.StartsWith("DemoScript"))
				{
					continue;
				}
				Type[] types = item.GetTypes();
				foreach (Type type in types)
				{
					try
					{
						PatchMethod(harmony, type, "Update");
						PatchMethod(harmony, type, "FixedUpdate");
						PatchMethod(harmony, type, "LateUpdate");
					}
					catch (Exception ex)
					{
						Debug.Log((object)("Error patching type " + type.FullName + ": " + ex.Message));
					}
				}
			}
			catch (ReflectionTypeLoadException ex2)
			{
				Debug.Log((object)("Error loading types from " + item.FullName + ": " + ex2.LoaderExceptions[0].Message));
			}
		}
	}

	private static bool IsAssemblyInDirectory(Assembly assembly, string[] assemblyFiles)
	{
		string assemblyLocation = assembly.Location;
		return assemblyFiles.Any((string file) => file.Equals(assemblyLocation, StringComparison.OrdinalIgnoreCase));
	}

	private static void PatchMethod(Harmony harmony, Type type, string methodName)
	{
		//IL_0025: 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: Expected O, but got Unknown
		//IL_0047: Expected O, but got Unknown
		MethodInfo method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
		if (method != null)
		{
			try
			{
				harmony.Patch((MethodBase)method, new HarmonyMethod(typeof(PatchAllUpdateMethods), "GenericPrefix", (Type[])null), new HarmonyMethod(typeof(PatchAllUpdateMethods), "GenericPostfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
			}
			catch (Exception ex)
			{
				Debug.Log((object)("Failed to patch method " + methodName + " in " + type.FullName + ": " + ex.Message));
			}
		}
	}

	public static void GenericPrefix(out GenericPState __state)
	{
		MethodBase method = new StackTrace().GetFrame(1).GetMethod();
		__state = new GenericPState
		{
			Stopwatch = new Stopwatch(),
			CallingMethod = method
		};
		__state.Stopwatch.Start();
	}

	public static void GenericPostfix(GenericPState __state)
	{
		__state.Stopwatch.Stop();
		int num = (int)__state.Stopwatch.Elapsed.TotalMilliseconds;
		string text = __state.CallingMethod.DeclaringType.FullName + "." + __state.CallingMethod.Name;
		if (!methodCallTimestamps.ContainsKey(text))
		{
			methodCallTimestamps[text] = new List<long>();
		}
		long currentTimestamp = Stopwatch.GetTimestamp();
		methodCallTimestamps[text].Add(currentTimestamp);
		methodCallTimestamps[text].RemoveAll((long timestamp) => (currentTimestamp - timestamp) / (Stopwatch.Frequency / 1000) > Settings.globalSettings.TimeWindowMs);
		if (methodCallTimestamps[text].Count > Settings.globalSettings.CallThreshold)
		{
			Debug.Log((object)$"{text} called {methodCallTimestamps[text].Count} times in the last {Settings.globalSettings.TimeWindowMs} ms");
		}
		if (num > Settings.globalSettings.ProfileLogThresholdMs)
		{
			Debug.Log((object)$"{text} | Runtime -> {num} ms | Call Count -> {methodCallTimestamps[text].Count}");
		}
	}
}
public static class Settings
{
	public abstract class Container
	{
		public override string ToString()
		{
			return string.Join("\n", from field in GetType().GetFields()
				where field.GetCustomAttribute(typeof(NonSerializedAttribute)) == null
				select field.Name + "=" + field.GetValue(this));
		}

		public string ToStringDiffOnly()
		{
			object defaults = Activator.CreateInstance(GetType());
			return string.Join("\n", from field in GetType().GetFields()
				where !field.GetValue(this).Equals(field.GetValue(defaults)) && field.GetCustomAttribute(typeof(NonSerializedAttribute)) == null
				select field.Name + "=" + field.GetValue(this));
		}

		public void LoadFrom(Dictionary<string, string> data)
		{
			//IL_0151: 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_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			object obj = Activator.CreateInstance(GetType());
			Dictionary<string, object> dictionary = new Dictionary<string, object>();
			List<string> list = data.Keys.ToList();
			FieldInfo[] fields = GetType().GetFields();
			foreach (FieldInfo fieldInfo in fields)
			{
				if (fieldInfo.GetCustomAttribute(typeof(NonSerializedAttribute)) != null)
				{
					continue;
				}
				object value = fieldInfo.GetValue(this);
				object obj2 = fieldInfo.GetValue(obj);
				if (data.TryGetValue(fieldInfo.Name, out var value2))
				{
					try
					{
						if (fieldInfo.FieldType == typeof(float))
						{
							obj2 = float.Parse(value2);
						}
						else if (fieldInfo.FieldType == typeof(bool))
						{
							obj2 = bool.Parse(value2);
						}
						else if (fieldInfo.FieldType == typeof(int))
						{
							obj2 = int.Parse(value2);
						}
						else if (fieldInfo.FieldType == typeof(string))
						{
							obj2 = value2;
						}
						else if (fieldInfo.FieldType == typeof(Vector3))
						{
							Match match = new Regex("\\((?<x>[^,]*?),(?<y>[^,]*?),(?<z>[^,]*?)\\)").Match(value2);
							if (!match.Success)
							{
								throw new FormatException();
							}
							Vector3 val = default(Vector3);
							val.x = float.Parse(match.Groups["x"].Value);
							val.y = float.Parse(match.Groups["y"].Value);
							val.z = float.Parse(match.Groups["z"].Value);
							obj2 = val;
						}
						else if (fieldInfo.FieldType == typeof(Vector2))
						{
							Match match2 = new Regex("\\((?<x>[^,]*?),(?<y>[^,]*?)\\)").Match(value2);
							if (!match2.Success)
							{
								throw new FormatException();
							}
							Vector2 val2 = default(Vector2);
							val2.x = float.Parse(match2.Groups["x"].Value);
							val2.y = float.Parse(match2.Groups["y"].Value);
							obj2 = val2;
						}
						else if (fieldInfo.FieldType == typeof(Vector4))
						{
							Match match3 = new Regex("\\((?<x>[^,]*?),(?<y>[^,]*?),(?<z>[^,]*?),(?<w>[^,]*?)\\)").Match(value2);
							if (!match3.Success)
							{
								throw new FormatException();
							}
							Vector4 val3 = default(Vector4);
							val3.x = float.Parse(match3.Groups["x"].Value);
							val3.y = float.Parse(match3.Groups["y"].Value);
							val3.z = float.Parse(match3.Groups["z"].Value);
							val3.w = float.Parse(match3.Groups["w"].Value);
							obj2 = val3;
						}
						else if (fieldInfo.FieldType.IsEnum)
						{
							obj2 = Enum.ToObject(fieldInfo.FieldType, value2);
						}
						else
						{
							Debug.LogWarning((object)("[ValheimVRM] unsupported setting type: " + fieldInfo.FieldType.FullName + " " + fieldInfo.Name));
						}
					}
					catch (Exception)
					{
						Debug.LogError((object)("[ValheimVRM] failed to read setting: " + fieldInfo.Name + "=" + value2));
					}
					list.Remove(fieldInfo.Name);
				}
				if (!value.Equals(obj2))
				{
					dictionary[fieldInfo.Name] = value;
				}
				fieldInfo.SetValue(this, obj2);
			}
			if (list.Count > 0)
			{
				foreach (string item in list)
				{
					Debug.LogWarning((object)("[ValheimVRM] unknown setting: " + item + "=" + data[item]));
				}
			}
			OnUpdate(dictionary);
		}

		public void Reset()
		{
			object obj = Activator.CreateInstance(GetType());
			Dictionary<string, object> dictionary = new Dictionary<string, object>();
			FieldInfo[] fields = GetType().GetFields();
			foreach (FieldInfo fieldInfo in fields)
			{
				if (fieldInfo.GetCustomAttribute(typeof(NonSerializedAttribute)) == null)
				{
					object value = fieldInfo.GetValue(this);
					object value2 = fieldInfo.GetValue(obj);
					fieldInfo.SetValue(this, value2);
					if (!value.Equals(value2))
					{
						dictionary[fieldInfo.Name] = value;
					}
				}
			}
			OnUpdate(dictionary);
		}

		public void CopyFrom(Container another)
		{
			Dictionary<string, object> dictionary = new Dictionary<string, object>();
			FieldInfo[] fields = GetType().GetFields();
			foreach (FieldInfo fieldInfo in fields)
			{
				if (fieldInfo.GetCustomAttribute(typeof(NonSerializedAttribute)) == null)
				{
					object value = fieldInfo.GetValue(this);
					object value2 = fieldInfo.GetValue(another);
					fieldInfo.SetValue(this, value2);
					if (!value.Equals(value2))
					{
						dictionary[fieldInfo.Name] = value;
					}
				}
			}
			OnUpdate(dictionary);
		}

		public virtual void OnUpdate(Dictionary<string, object> oldValues)
		{
		}
	}

	public class VrmSettingsContainer : Container
	{
		[NonSerialized]
		public string Name;

		public float ModelScale = 1.1f;

		public float ModelOffsetY;

		public float PlayerHeight = 1.85f;

		public float PlayerRadius = 0.5f;

		public Vector3 SittingOnChairOffset = Vector3.zero;

		public Vector3 SittingOnThroneOffset = Vector3.zero;

		public Vector3 SittingOnShipOffset = Vector3.zero;

		public Vector3 HoldingMastOffset = Vector3.zero;

		public Vector3 HoldingDragonOffset = Vector3.zero;

		public Vector3 SittingIdleOffset = Vector3.zero;

		public Vector3 SleepingOffset = Vector3.zero;

		public Vector3 RightHandItemPos = Vector3.zero;

		public Vector3 LeftHandItemPos = Vector3.zero;

		public Vector3 RightHandBackItemPos = Vector3.zero;

		public Vector3 RightHandBackItemToolPos = Vector3.zero;

		public Vector3 LeftHandBackItemPos = Vector3.zero;

		public Vector3 BowBackPos = Vector3.zero;

		public Vector3 KnifeSidePos = Vector3.zero;

		public Vector3 KnifeSideRot = Vector3.zero;

		public Vector3 StaffPos = Vector3.zero;

		public Vector3 StaffSkeletonPos = Vector3.zero;

		public Vector3 StaffRot = Vector3.zero;

		public bool HelmetVisible;

		public Vector3 HelmetScale = Vector3.one;

		public Vector3 HelmetOffset = Vector3.zero;

		public bool ChestVisible;

		public bool ShouldersVisible;

		public bool UtilityVisible;

		public bool LegsVisible;

		public float ModelBrightness = 0.8f;

		public bool FixCameraHeight = true;

		public bool UseMToonShader;

		public bool EnablePlayerFade = true;

		public bool AllowShare = true;

		public float SpringBoneStiffness = 1f;

		public float SpringBoneGravityPower = 1f;

		public float EquipmentScale = 1f;

		public float AttackDistanceScale = 1f;

		public float InteractionDistanceScale = 1f;

		public float SwimDepthScale = 1f;

		public bool AttemptTextureFix;

		public float HeightAspect => PlayerHeight / 1.85f;

		public float RadiusAspect => PlayerRadius / 0.5f;

		public override void OnUpdate(Dictionary<string, object> oldValues)
		{
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: 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_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			if (!VrmManager.VrmDic.ContainsKey(Name))
			{
				return;
			}
			Player val = null;
			foreach (Player allPlayer in Player.GetAllPlayers())
			{
				if (allPlayer.GetPlayerName() == Name)
				{
					val = allPlayer;
					break;
				}
			}
			if ((Object)(object)val == (Object)null)
			{
				return;
			}
			foreach (KeyValuePair<string, object> oldValue in oldValues)
			{
				switch (oldValue.Key)
				{
				case "ModelScale":
				{
					if (VrmManager.VrmDic.TryGetValue(Name, out var value))
					{
						value.VisualModel.transform.localScale = Vector3.one * ModelScale;
						VrmManager.PlayerToVrmInstance[val].transform.localScale = Vector3.one * ModelScale;
					}
					break;
				}
				case "PlayerHeight":
					((Component)val).GetComponent<CapsuleCollider>().height = PlayerHeight;
					((Component)val).GetComponent<CapsuleCollider>().center = new Vector3(0f, PlayerHeight / 2f, 0f);
					((Component)val).GetComponent<Rigidbody>().centerOfMass = new Vector3(0f, PlayerHeight / 2f, 0f);
					break;
				case "PlayerRadius":
					((Component)val).GetComponent<CapsuleCollider>().radius = PlayerRadius;
					break;
				case "SpringBoneStiffness":
				{
					VRMSpringBone[] componentsInChildren = ((Component)val).GetComponent<VrmController>().visual.GetComponentsInChildren<VRMSpringBone>();
					foreach (VRMSpringBone obj2 in componentsInChildren)
					{
						obj2.m_stiffnessForce = obj2.m_stiffnessForce / (float)oldValue.Value * SpringBoneStiffness;
					}
					break;
				}
				case "SpringBoneGravityPower":
				{
					VRMSpringBone[] componentsInChildren = ((Component)val).GetComponent<VrmController>().visual.GetComponentsInChildren<VRMSpringBone>();
					foreach (VRMSpringBone obj in componentsInChildren)
					{
						obj.m_gravityPower = obj.m_gravityPower / (float)oldValue.Value * SpringBoneGravityPower;
					}
					break;
				}
				case "InteractionDistanceScale":
					val.m_maxInteractDistance = val.m_maxInteractDistance / (float)oldValue.Value * InteractionDistanceScale;
					val.m_maxPlaceDistance = val.m_maxPlaceDistance / (float)oldValue.Value * InteractionDistanceScale;
					break;
				case "SwimDepthScale":
					((Character)val).m_swimDepth = ((Character)val).m_swimDepth / (float)oldValue.Value * SwimDepthScale;
					break;
				}
			}
		}
	}

	public class GlobalSettingsContainer : Container
	{
		public bool ReloadInMenu;

		public bool AcceptVrmSharing = true;

		public bool DrawPlayerSizeGizmo;

		public float StartVrmShareDelay = 10f;

		public bool ForceWindDisabled;

		public bool AllowIndividualWinds = true;

		public bool EnableProfileCode;

		public int ProfileLogThresholdMs = 20;

		public int CallThreshold = 6;

		public int TimeWindowMs = 100;

		public string UseShaderBundle = "current";

		public override void OnUpdate(Dictionary<string, object> oldValues)
		{
			using Dictionary<string, object>.Enumerator enumerator = oldValues.GetEnumerator();
			while (enumerator.MoveNext())
			{
				switch (enumerator.Current.Key)
				{
				case "DrawPlayerSizeGizmo":
				{
					VrmController localController = VrmController.GetLocalController();
					if ((Object)(object)localController != (Object)null)
					{
						if (DrawPlayerSizeGizmo)
						{
							localController.ActivateSizeGizmo();
						}
						else
						{
							localController.DeactivateSizeGizmo();
						}
					}
					break;
				}
				case "ForceWindDisabled":
				{
					VrmController[] array = Object.FindObjectsOfType<VrmController>();
					for (int i = 0; i < array.Length; i++)
					{
						array[i].ResetSpringBonesWind();
					}
					break;
				}
				case "AllowIndividualWinds":
				{
					VrmController[] array = Object.FindObjectsOfType<VrmController>();
					for (int i = 0; i < array.Length; i++)
					{
						array[i].ReloadSpringBones();
					}
					break;
				}
				}
			}
		}
	}

	private static Dictionary<string, VrmSettingsContainer> playerSettings = new Dictionary<string, VrmSettingsContainer>();

	public static readonly GlobalSettingsContainer globalSettings = new GlobalSettingsContainer();

	public static string ValheimVRMDir => Path.Combine(Environment.CurrentDirectory, "ValheimVRM");

	public static string PlayerSettingsPath(string playerName, bool shared)
	{
		return Path.Combine(ValheimVRMDir, shared ? "Shared" : "", "settings_" + playerName + ".txt");
	}

	public static VrmSettingsContainer GetSettings(string playerName)
	{
		if (!playerSettings.ContainsKey(playerName))
		{
			if (!playerSettings.ContainsKey("___Default"))
			{
				return null;
			}
			return playerSettings["___Default"];
		}
		return playerSettings[playerName];
	}

	public static void AddSettingsFromFile(string playerName, bool shared)
	{
		string path = PlayerSettingsPath(playerName, shared);
		if (File.Exists(path))
		{
			AddSettingsRaw(playerName, File.ReadAllLines(path));
			return;
		}
		if (!playerSettings.ContainsKey(playerName))
		{
			playerSettings[playerName] = new VrmSettingsContainer();
		}
		playerSettings[playerName].Name = playerName;
		playerSettings[playerName].Reset();
		Debug.Log((object)("[ValheimVRM] loaded settings for " + playerName + ":\n" + playerSettings[playerName].ToString()));
	}

	public static void AddSettingsRaw(string playerName, ICollection<string> settingLines)
	{
		Dictionary<string, string> dictionary = new Dictionary<string, string>();
		foreach (KeyValuePair<string, string> item in ParseSettings(settingLines))
		{
			dictionary[item.Key] = item.Value;
		}
		if (!playerSettings.ContainsKey(playerName))
		{
			playerSettings[playerName] = new VrmSettingsContainer();
		}
		playerSettings[playerName].Name = playerName;
		playerSettings[playerName].LoadFrom(dictionary);
		dictionary.Max((KeyValuePair<string, string> kvp) => kvp.Key.Length);
		Debug.Log((object)("[ValheimVRM] loaded settings for " + playerName + ":\n" + playerSettings[playerName].ToString()));
	}

	public static bool ContainsSettings(string playerName)
	{
		return playerSettings.ContainsKey(playerName);
	}

	public static IEnumerable<KeyValuePair<string, string>> ParseSettings(IEnumerable<string> lines)
	{
		foreach (string line in lines)
		{
			int num = line.IndexOf("//");
			string text = ((num > -1) ? line.Substring(0, num) : line);
			int num2 = text.IndexOf("=");
			if (num2 != -1)
			{
				string key = text.Substring(0, num2).Trim();
				string value = text.Substring(num2 + 1).Trim();
				yield return new KeyValuePair<string, string>(key, value);
			}
		}
	}

	public static void ReloadGlobalSettings()
	{
		string path = Path.Combine(ValheimVRMDir, "global_settings.txt");
		if (File.Exists(path))
		{
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			foreach (KeyValuePair<string, string> item in ParseSettings(File.ReadAllLines(path)))
			{
				dictionary[item.Key] = item.Value;
			}
			globalSettings.LoadFrom(dictionary);
		}
		else
		{
			globalSettings.Reset();
		}
		Debug.Log((object)("[ValheimVRM] loaded global settings:\n" + globalSettings.ToString()));
	}

	public static void RemoveSettings(string playerName)
	{
		if (playerSettings.ContainsKey(playerName))
		{
			playerSettings.Remove(playerName);
		}
	}
}
public sealed class TextureDeserializerAsync : ITextureDeserializer
{
	public async Task<Texture2D> LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller)
	{
		LoaderSettings val = default(LoaderSettings);
		val.linear = (int)textureInfo.ColorSpace == 1;
		string dataMimeType = textureInfo.DataMimeType;
		if (!(dataMimeType == "image/png"))
		{
			if (dataMimeType == "image/jpeg")
			{
				val.format = (Format)2;
			}
			else if (string.IsNullOrEmpty(textureInfo.DataMimeType))
			{
				Debug.Log((object)"Texture image MIME type is empty.");
			}
			else
			{
				Debug.Log((object)("Texture image MIME type `" + textureInfo.DataMimeType + "` is not supported."));
			}
		}
		else
		{
			val.format = (Format)13;
		}
		Texture2D texture = await AsyncImageLoader.CreateFromImageAsync(textureInfo.ImageData, val);
		((Texture)texture).wrapModeU = textureInfo.WrapModeU;
		((Texture)texture).wrapModeV = textureInfo.WrapModeV;
		((Texture)texture).filterMode = textureInfo.FilterMode;
		await awaitCaller.NextFrame();
		return texture;
	}
}
public sealed class TextureDeserializer : ITextureDeserializer
{
	public async Task<Texture2D> LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller)
	{
		LoaderSettings val = default(LoaderSettings);
		val.linear = (int)textureInfo.ColorSpace == 1;
		switch (textureInfo.DataMimeType)
		{
		case "image/png":
			val.format = (Format)13;
			break;
		case "image/jpg":
		case "image/jpeg":
			val.format = (Format)2;
			break;
		default:
			if (string.IsNullOrEmpty(textureInfo.DataMimeType))
			{
				Debug.Log((object)"Texture image MIME type is empty.");
			}
			else
			{
				Debug.Log((object)("Texture image MIME type `" + textureInfo.DataMimeType + "` is not supported."));
			}
			break;
		}
		Texture2D texture = AsyncImageLoader.CreateFromImage(textureInfo.ImageData, val);
		((Texture)texture).wrapModeU = textureInfo.WrapModeU;
		((Texture)texture).wrapModeV = textureInfo.WrapModeV;
		((Texture)texture).filterMode = textureInfo.FilterMode;
		await awaitCaller.NextFrame();
		return texture;
	}
}
public class TimeTracker
{
	private static DateTime startTime;

	private static DateTime lastAccessTime;

	private static bool isStartTimeSet;

	public static void SetStartTime()
	{
		startTime = DateTime.UtcNow;
		lastAccessTime = DateTime.UtcNow;
		isStartTimeSet = true;
	}

	public static string GetElapsedTime()
	{
		if (!isStartTimeSet)
		{
			Debug.LogError((object)"Start time not set. Call SetStartTime() before getting elapsed time.");
			return "Error: Start time not set.";
		}
		DateTime utcNow = DateTime.UtcNow;
		TimeSpan timeSpan = utcNow - lastAccessTime;
		TimeSpan timeSpan2 = utcNow - startTime;
		lastAccessTime = utcNow;
		string text = $"{Math.Round(timeSpan.TotalMilliseconds, 2)}ms";
		string text2 = $"{Math.Round(timeSpan2.TotalSeconds, 2)}s";
		return " Time From Last: " + text + " | Total Time Elapsed: " + text2;
	}
}
public static class Utils
{
	public static Tout GetField<Tin, Tout>(this Tin self, string fieldName)
	{
		return AccessTools.FieldRefAccess<Tin, Tout>(fieldName).Invoke(self);
	}

	public static string GetHaxadecimalString(this IEnumerable<byte> self)
	{
		if (self == null)
		{
			return "none";
		}
		StringBuilder stringBuilder = new StringBuilder(self.Count() * 2);
		foreach (byte item in self)
		{
			stringBuilder.AppendFormat("{0:x2}", item);
		}
		return stringBuilder.ToString();
	}

	public static V GetOrCreateDefault<K, V>(this IDictionary<K, V> self, K key) where V : new()
	{
		if (self.ContainsKey(key))
		{
			return self[key];
		}
		return self[key] = new V();
	}

	public static bool CompareArrays<T>(IEnumerable<T> a, IEnumerable<T> b)
	{
		if (a == null == (b == null))
		{
			if (a == null || b == null)
			{
				return true;
			}
			return a.SequenceEqual(b);
		}
		return false;
	}

	public static FieldInfo GetField<T>(string name)
	{
		return typeof(T).GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
	}

	public static MethodInfo GetMethod<T>(string name)
	{
		return typeof(T).GetMethod(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
	}

	public static int FindOp(this List<CodeInstruction> self, OpCode code, int from = 0)
	{
		return self.FindIndex(from, (CodeInstruction inst) => inst.opcode == code);
	}

	public static int FindOp(this List<CodeInstruction> self, OpCode code, object operand, int from = 0)
	{
		return self.FindIndex(from, (CodeInstruction inst) => inst.opcode == code && inst.operand.Equals(operand));
	}

	public static bool IsOp(CodeInstruction self, OpCode code)
	{
		return self.opcode == code;
	}

	public static bool IsOp(this CodeInstruction self, OpCode code, object operand)
	{
		if (self.opcode == code)
		{
			return self.operand.Equals(operand);
		}
		return false;
	}
}
[HarmonyPatch(typeof(Shader))]
[HarmonyPatch("Find")]
internal static class ShaderPatch
{
	private static readonly Dictionary<string, Shader> ShaderDictionary;

	static ShaderPatch()
	{
		ShaderDictionary = new Dictionary<string, Shader>();
		Shader[] array = Resources.FindObjectsOfTypeAll<Shader>();
		foreach (Shader val in array)
		{
			if (!ShaderDictionary.ContainsKey(((Object)val).name))
			{
				ShaderDictionary.Add(((Object)val).name, val);
			}
		}
		Debug.Log((object)"[ValheimVRM ShaderPatch] All shaders loaded into ShaderDictionary.");
	}

	private static bool Prefix(ref Shader __result, string name)
	{
		if (ShaderDictionary.TryGetValue(name, out var value))
		{
			Debug.Log((object)("[ValheimVRM ShaderPatch] Shader '" + name + "' found in preloaded ShaderDictionary."));
			__result = value;
			return false;
		}
		if (VRMShaders.Shaders.TryGetValue(name, out value))
		{
			Debug.Log((object)("[ValheimVRM ShaderPatch] Shader '" + name + "' found in VRMShaders.Shaders"));
			__result = value;
			return false;
		}
		Debug.Log((object)("[ValheimVRM ShaderPatch] Shader '" + name + "' NOT FOUND in ShaderDictionary. passing method to original Shader.Find."));
		return true;
	}
}
public static class VRMShaders
{
	public static Dictionary<string, Shader> Shaders { get; } = new Dictionary<string, Shader>();


	public static void Initialize()
	{
		string text = "";
		if (Settings.globalSettings.UseShaderBundle == "current")
		{
			text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "UniVrm.shaders");
		}
		else if (Settings.globalSettings.UseShaderBundle == "old")
		{
			text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "OldUniVrm.shaders");
		}
		else
		{
			Debug.LogError((object)"[ValheimVRM] Invalid UseShaderBundle; old, current");
		}
		if (File.Exists(text))
		{
			Shader[] array = AssetBundle.LoadFromFile(text).LoadAllAssets<Shader>();
			foreach (Shader val in array)
			{
				Debug.Log((object)("[ValheimVRM] Add Shader: " + ((Object)val).name));
				Shaders.Add(((Object)val).name, val);
			}
		}
	}
}
public static class VrmManager
{
	public static Dictionary<Player, GameObject> PlayerToVrmInstance = new Dictionary<Player, GameObject>();

	public static Dictionary<Player, string> PlayerToName = new Dictionary<Player, string>();

	public static Dictionary<string, VRM> VrmDic = new Dictionary<string, VRM>();

	public static VRM RegisterVrm(VRM vrm, LODGroup sampleLODGroup, Player player)
	{
		//IL_0229: Unknown result type (might be due to invalid IL or missing references)
		//IL_0212: Unknown result type (might be due to invalid IL or missing references)
		//IL_0217: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)vrm.VisualModel == (Object)null)
		{
			return null;
		}
		foreach (KeyValuePair<string, VRM> item3 in VrmDic)
		{
			if (!(item3.Key == vrm.Name) && (item3.Value == vrm || (Object)(object)item3.Value.VisualModel == (Object)(object)vrm.VisualModel))
			{
				Debug.LogError((object)("[ValheimVRM] attempt to register a vrm that is already registered as " + item3.Key));
				return null;
			}
		}
		if (VrmDic.ContainsKey(vrm.Name))
		{
			VRM vRM = VrmDic[vrm.Name];
			if (vRM == vrm)
			{
				return vrm;
			}
			if ((Object)(object)vRM.VisualModel != (Object)(object)vrm.VisualModel)
			{
				Object.Destroy((Object)(object)vRM.VisualModel);
			}
			VrmDic[vrm.Name] = null;
		}
		Object.DontDestroyOnLoad((Object)(object)vrm.VisualModel);
		VrmDic[vrm.Name] = vrm;
		Settings.VrmSettingsContainer settings = Settings.GetSettings(vrm.Name);
		List<Material> list = new List<Material>();
		SkinnedMeshRenderer[] componentsInChildren = vrm.VisualModel.GetComponentsInChildren<SkinnedMeshRenderer>();
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			Material[] materials = ((Renderer)componentsInChildren[i]).materials;
			foreach (Material item in materials)
			{
				if (!list.Contains(item))
				{
					list.Add(item);
				}
			}
		}
		MeshRenderer[] componentsInChildren2 = vrm.VisualModel.GetComponentsInChildren<MeshRenderer>();
		for (int i = 0; i < componentsInChildren2.Length; i++)
		{
			Material[] materials = ((Renderer)componentsInChildren2[i]).materials;
			foreach (Material item2 in materials)
			{
				if (!list.Contains(item2))
				{
					list.Add(item2);
				}
			}
		}
		((MonoBehaviour)CoroutineHelper.Instance).StartCoroutine(ProcessMaterialsCoroutine(vrm, list, settings));
		LODGroup val = vrm.VisualModel.AddComponent<LODGroup>();
		if (settings.EnablePlayerFade)
		{
			LOD[] array = new LOD[1];
			Renderer[] componentsInChildren3 = (Renderer[])(object)vrm.VisualModel.GetComponentsInChildren<SkinnedMeshRenderer>();
			array[0] = new LOD(0.1f, componentsInChildren3);
			val.SetLODs((LOD[])(object)array);
		}
		val.RecalculateBounds();
		val.fadeMode = sampleLODGroup.fadeMode;
		val.animateCrossFading = sampleLODGroup.animateCrossFading;
		vrm.VisualModel.SetActive(false);
		return vrm;
	}

	public static IEnumerator ProcessMaterialsCoroutine(VRM vrm, List<Material> materials, Settings.VrmSettingsContainer settings)
	{
		Shader foundShader = Shader.Find("Custom/Player");
		foreach (Material mat in materials)
		{
			if (settings.UseMToonShader && !settings.AttemptTextureFix && mat.HasProperty("_Color"))
			{
				Color color2 = mat.GetColor("_Color");
				color2.r *= settings.ModelBrightness;
				color2.g *= settings.ModelBrightness;
				color2.b *= settings.ModelBrightness;
				mat.SetColor("_Color", color2);
			}
			else if (settings.AttemptTextureFix && (Object)(object)mat.shader != (Object)(object)foundShader)
			{
				Color color = (mat.HasProperty("_Color") ? mat.GetColor("_Color") : Color.white);
				Texture2D val = (Texture2D)(mat.HasProperty("_MainTex") ? /*isinst with value type is only supported in some contexts*/: null);
				Texture2D tex = val;
				if ((Object)(object)val != (Object)null)
				{
					tex = new Texture2D(((Texture)val).width, ((Texture)val).height);
					Color[] pixels = val.GetPixels();
					Task pixelsTask = Task.Run(delegate
					{
						//IL_000b: Unknown result type (might be due to invalid IL or missing references)
						//IL_0011: Unknown result type (might be due to invalid IL or missing references)
						//IL_0016: Unknown result type (might be due to invalid IL or missing references)
						//IL_001b: 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_0049: Unknown result type (might be due to invalid IL or missing references)
						//IL_004e: 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)
						float num = default(float);
						float num2 = default(float);
						float num3 = default(float);
						for (int i = 0; i < pixels.Length; i++)
						{
							Color val3 = pixels[i] * color;
							Color.RGBToHSV(val3, ref num, ref num2, ref num3);
							num3 *= settings.ModelBrightness;
							pixels[i] = Color.HSVToRGB(num, num2, num3, true);
							pixels[i].a = val3.a;
						}
					});
					while (!pixelsTask.IsCompleted)
					{
						yield return (object)new WaitUntil((Func<bool>)(() => pixelsTask.IsCompleted));
					}
					pixelsTask.Wait();
					tex.SetPixels(pixels);
					tex.Apply();
				}
				Texture val2 = (mat.HasProperty("_BumpMap") ? mat.GetTexture("_BumpMap") : null);
				mat.shader = foundShader;
				mat.SetTexture("_MainTex", (Texture)(object)tex);
				mat.SetTexture("_SkinBumpMap", val2);
				mat.SetColor("_SkinColor", color);
				mat.SetTexture("_ChestTex", (Texture)(object)tex);
				mat.SetTexture("_ChestBumpMap", val2);
				mat.SetTexture("_LegsTex", (Texture)(object)tex);
				mat.SetTexture("_LegsBumpMap", val2);
				mat.SetFloat("_Glossiness", 0.2f);
				mat.SetFloat("_MetalGlossiness", 0f);
			}
			yield return null;
		}
		Debug.Log((object)"[ValheimVRM] Material processing completed.");
	}
}
[HarmonyPatch(typeof(VisEquipment), "UpdateLodgroup")]
internal static class Patch_VisEquipment_UpdateLodgroup
{
	[HarmonyPostfix]
	private static void Postfix(VisEquipment __instance)
	{
		//IL_021d: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: 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_01df: Unknown result type (might be due to invalid IL or missing references)
		//IL_0254: Unknown result type (might be due to invalid IL or missing references)
		//IL_0265: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0302: Unknown result type (might be due to invalid IL or missing references)
		//IL_033e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0345: Unknown result type (might be due to invalid IL or missing references)
		//IL_0356: Unknown result type (might be due to invalid IL or missing references)
		//IL_035d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0407: Unknown result type (might be due to invalid IL or missing references)
		//IL_0411: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0422: Unknown result type (might be due to invalid IL or missing references)
		//IL_0429: Unknown result type (might be due to invalid IL or missing references)
		//IL_0330: Unknown result type (might be due to invalid IL or missing references)
		//IL_0328: 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)
		if (!__instance.m_isPlayer)
		{
			return;
		}
		Player component = ((Component)__instance).GetComponent<Player>();
		if ((Object)(object)component == (Object)null || !VrmManager.PlayerToVrmInstance.ContainsKey(component))
		{
			return;
		}
		Settings.VrmSettingsContainer settings = Settings.GetSettings(VrmManager.PlayerToName[component]);
		GameObject field = __instance.GetField<VisEquipment, GameObject>("m_hairItemInstance");
		if ((Object)(object)field != (Object)null)
		{
			SetVisible(field, flag: false);
		}
		GameObject field2 = __instance.GetField<VisEquipment, GameObject>("m_beardItemInstance");
		if ((Object)(object)field2 != (Object)null)
		{
			SetVisible(field2, flag: false);
		}
		List<GameObject> field3 = __instance.GetField<VisEquipment, List<GameObject>>("m_chestItemInstances");
		if (field3 != null && !settings.ChestVisible)
		{
			foreach (GameObject item in field3)
			{
				SetVisible(item, flag: false);
			}
		}
		List<GameObject> field4 = __instance.GetField<VisEquipment, List<GameObject>>("m_legItemInstances");
		if (field4 != null && !settings.LegsVisible)
		{
			foreach (GameObject item2 in field4)
			{
				SetVisible(item2, flag: false);
			}
		}
		List<GameObject> field5 = __instance.GetField<VisEquipment, List<GameObject>>("m_shoulderItemInstances");
		if (field5 != null && field5 != null && !settings.ShouldersVisible)
		{
			foreach (GameObject item3 in field5)
			{
				SetVisible(item3, flag: false);
			}
		}
		List<GameObject> field6 = __instance.GetField<VisEquipment, List<GameObject>>("m_utilityItemInstances");
		if (field6 != null && !settings.UtilityVisible)
		{
			foreach (GameObject item4 in field6)
			{
				SetVisible(item4, flag: false);
			}
		}
		GameObject field7 = __instance.GetField<VisEquipment, GameObject>("m_helmetItemInstance");
		if ((Object)(object)field7 != (Object)null)
		{
			if (!settings.HelmetVisible)
			{
				SetVisible(field7, flag: false);
			}
			else
			{
				field7.transform.localScale = settings.HelmetScale;
				field7.transform.localPosition = settings.HelmetOffset;
			}
		}
		float equipmentScale = settings.EquipmentScale;
		Vector3 val = default(Vector3);
		((Vector3)(ref val))..ctor(equipmentScale, equipmentScale, equipmentScale);
		GameObject field8 = __instance.GetField<VisEquipment, GameObject>("m_leftItemInstance");
		if ((Object)(object)field8 != (Object)null)
		{
			field8.transform.localPosition = settings.LeftHandItemPos;
			field8.transform.localScale = val;
		}
		GameObject field9 = __instance.GetField<VisEquipment, GameObject>("m_rightItemInstance");
		if ((Object)(object)field9 != (Object)null)
		{
			field9.transform.localPosition = settings.RightHandItemPos;
			field9.transform.localScale = val;
		}
		GameObject field10 = __instance.GetField<VisEquipment, GameObject>("m_rightBackItemInstance");
		if ((Object)(object)field10 != (Object)null)
		{
			object? value = Utils.GetField<VisEquipment>("m_rightBackItem").GetValue(__instance);
			bool flag = value.ToString().Substring(0, 5) == "Knife";
			bool flag2 = value.ToString().Substring(0, 5) == "Staff";
			Vector3 zero = Vector3.zero;
			if (flag)
			{
				zero = settings.KnifeSidePos;
				field10.transform.Rotate(settings.KnifeSideRot);
			}
			else if (flag2)
			{
				zero = settings.StaffPos;
				field10.transform.Rotate(settings.StaffRot);
			}
			else
			{
				zero = (((Object)(object)field10.transform.parent == (Object)(object)__instance.m_backTool) ? settings.RightHandBackItemToolPos : settings.RightHandBackItemPos);
			}
			field10.transform.localPosition = zero / 100f;
			field10.transform.localScale = val / 100f;
		}
		GameObject field11 = __instance.GetField<VisEquipment, GameObject>("m_leftBackItemInstance");
		if ((Object)(object)field11 != (Object)null)
		{
			object? value2 = Utils.GetField<VisEquipment>("m_leftBackItem").GetValue(__instance);
			bool flag3 = value2.ToString().Substring(0, 3) == "Bow";
			bool flag4 = value2.ToString() == "StaffSkeleton";
			if (flag3)
			{
				field11.transform.localPosition = settings.BowBackPos / 100f;
			}
			else if (flag4)
			{
				field11.transform.localPosition = settings.StaffSkeletonPos / 100f;
			}
			else
			{
				field11.transform.localPosition = settings.LeftHandBackItemPos / 100f;
			}
			field11.transform.localScale = val / 100f;
		}
	}

	private static void SetVisible(GameObject obj, bool flag)
	{
		MeshRenderer[] componentsInChildren = obj.GetComponentsInChildren<MeshRenderer>();
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			((Renderer)componentsInChildren[i]).enabled = flag;
		}
		SkinnedMeshRenderer[] componentsInChildren2 = obj.GetComponentsInChildren<SkinnedMeshRenderer>();
		for (int i = 0; i < componentsInChildren2.Length; i++)
		{
			((Renderer)componentsInChildren2[i]).enabled = flag;
		}
	}
}
[HarmonyPatch(typeof(Humanoid), "OnRagdollCreated")]
internal static class Patch_Humanoid_OnRagdollCreated
{
	[HarmonyPostfix]
	private static void Postfix(Humanoid __instance, Ragdoll ragdoll)
	{
		Player val = (Player)(object)((__instance is Player) ? __instance : null);
		if (val != null)
		{
			SkinnedMeshRenderer[] componentsInChildren = ((Component)ragdoll).GetComponentsInChildren<SkinnedMeshRenderer>();
			foreach (SkinnedMeshRenderer obj in componentsInChildren)
			{
				((Renderer)obj).forceRenderingOff = true;
				obj.updateWhenOffscreen = true;
			}
			Animator val2 = ((Component)ragdoll).gameObject.AddComponent<Animator>();
			val2.keepAnimatorStateOnDisable = true;
			val2.cullingMode = (AnimatorCullingMode)0;
			Animator field = val.GetField<Player, Animator>("m_animator");
			val2.avatar = field.avatar;
			if (VrmManager.PlayerToVrmInstance.TryGetValue(val, out var value))
			{
				value.transform.SetParent(((Component)ragdoll).transform);
				value.GetComponent<VRMAnimationSync>().Setup(val2, Settings.GetSettings(VrmManager.PlayerToName[val]), isRagdoll: true);
			}
		}
	}
}
[HarmonyPatch(typeof(Character), "SetVisible")]
internal static class Patch_Character_SetVisible
{
	[HarmonyPostfix]
	private static void Postfix(Character __instance, bool visible)
	{
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Expected O, but got Unknown
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		if (!__instance.IsPlayer() || !VrmManager.PlayerToVrmInstance.TryGetValue((Player)__instance, out var value) || !((Object)(object)value != (Object)null))
		{
			return;
		}
		LODGroup component = value.GetComponent<LODGroup>();
		if ((Object)(object)component != (Object)null)
		{
			if (visible)
			{
				component.localReferencePoint = __instance.GetField<Character, Vector3>("m_originalLocalRef");
			}
			else
			{
				component.localReferencePoint = new Vector3(999999f, 999999f, 999999f);
			}
		}
	}
}
[HarmonyPatch(typeof(Player), "OnDeath")]
internal static class Patch_Player_OnDeath
{
	[HarmonyPostfix]
	private static void Postfix(Player __instance)
	{
		string text = null;
		if (VrmManager.PlayerToName.ContainsKey(__instance))
		{
			text = VrmManager.PlayerToName[__instance];
		}
		if (text != null && Settings.GetSettings(text).FixCameraHeight)
		{
			Object.Destroy((Object)(object)((Component)__instance).GetComponent<VRMEyePositionSync>());
		}
	}
}
[HarmonyPatch(typeof(Character), "GetHeadPoint")]
internal static class Patch_Character_GetHeadPoint
{
	[HarmonyPostfix]
	private static bool Prefix(Character __instance, ref Vector3 __result)
	{
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		Player val = (Player)(object)((__instance is Player) ? __instance : null);
		if ((Object)(object)val == (Object)null)
		{
			return true;
		}
		if (VrmManager.PlayerToVrmInstance.TryGetValue(val, out var value))
		{
			Animator componentInChildren = value.GetComponentInChildren<Animator>();
			if ((Object)(object)componentInChildren == (Object)null)
			{
				return true;
			}
			Transform boneTransform = componentInChildren.GetBoneTransform((HumanBodyBones)10);
			if ((Object)(object)boneTransform == (Object)null)
			{
				return true;
			}
			__result = boneTransform.position;
			return false;
		}
		return true;
	}
}
[HarmonyPatch(typeof(Hud), "UpdateStealth")]
public static class Patch_Hud_UpdateStealth
{
	[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
	private static void Postfix(Hud __instance, Player player, float bowDrawPercentage)
	{
		if (((Character)player).IsCrouching() && (double)bowDrawPercentage == 0.0)
		{
			if (player.IsSensed())
			{
				__instance.m_targetedAlert.SetActive(true);
				__instance.m_targeted.SetActive(false);
				__instance.m_hidden.SetActive(false);
			}
			else if (player.IsTargeted())
			{
				__instance.m_targetedAlert.SetActive(false);
				__instance.m_targeted.SetActive(true);
				__instance.m_hidden.SetActive(false);
			}
			else
			{
				__instance.m_targetedAlert.SetActive(false);
				__instance.m_targeted.SetActive(false);
				__instance.m_hidden.SetActive(true);
			}
			((Component)__instance.m_stealthBar).gameObject.SetActive(true);
			__instance.m_stealthBar.SetValue(((Character)player).GetStealthFactor());
		}
		else
		{
			__instance.m_targetedAlert.SetActive(false);
			__instance.m_hidden.SetActive(false);
			__instance.m_targeted.SetActive(false);
			((Component)__instance.m_stealthBar).gameObject.SetActive(false);
		}
	}
}
[HarmonyPatch(typeof(Humanoid), "StartAttack")]
internal static class Patch_Humanoid_StartAttack
{
	[HarmonyPostfix]
	private static void Postfix(Humanoid __instance, Character target, bool secondaryAttack)
	{
		Player val = (Player)(object)((__instance is Player) ? __instance : null);
		if (val != null)
		{
			ref Attack reference = ref AccessTools.FieldRefAccess<Player, Attack>("m_currentAttack").Invoke(val);
			if (reference != null && AccessTools.FieldRefAccess<Attack, float>("m_time").Invoke(reference) == 0f && VrmManager.PlayerToName.TryGetValue(val, out var value) && Settings.ContainsSettings(value))
			{
				Settings.VrmSettingsContainer settings = Settings.GetSettings(value);
				Attack obj = reference;
				obj.m_attackRange *= settings.AttackDistanceScale;
				Attack obj2 = reference;
				obj2.m_attackHeight *= settings.PlayerHeight / 1.85f;
				Attack obj3 = reference;
				obj3.m_attackOffset *= settings.PlayerHeight / 1.85f;
			}
		}
	}
}
[HarmonyPatch(typeof(Player), "UpdatePlacementGhost")]
internal static class Patch_Player_UpdatePlacementGhost
{
	[HarmonyPostfix]
	private static void UpdatePlacementGhost(Player __instance, bool flashGuardStone)
	{
		FieldInfo field = typeof(Player).GetField("m_placementStatus", BindingFlags.Instance | BindingFlags.NonPublic);
		if ((int)field.GetValue(__instance) == 10)
		{
			field.SetValue(__instance, 0);
		}
	}
}
[HarmonyPatch(typeof(Game), "SpawnPlayer")]
internal static class Patch_Game_SpawnPlayer
{
	[HarmonyPostfix]
	private static void Postfix(Game __instance, bool ___m_firstSpawn, Player __result)
	{
		if (___m_firstSpawn)
		{
			((Component)__result).GetComponent<VrmController>().ShareVrm();
			((Component)__result).GetComponent<VrmController>().QueryAllVrm();
		}
	}
}
[HarmonyPatch(typeof(Player), "OnDestroy")]
internal static class Patch_Player_OnDestroy
{
	[HarmonyPostfix]
	private static void Postfix(Player __instance)
	{
		VrmManager.PlayerToName.Remove(__instance);
		VrmManager.PlayerToVrmInstance.Remove(__instance);
	}
}
[HarmonyPatch(typeof(Player), "Awake")]
internal static class Patch_Player_Awake
{
	[HarmonyPostfix]
	private static void Postfix(Player __instance, ZNetView ___m_nview)
	{
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		Commands.Trigger();
		string text = null;
		string text2 = null;
		if ((Object)(object)Game.instance != (Object)null)
		{
			text2 = Game.instance.GetPlayerProfile().GetName();
			text = __instance.GetPlayerName();
			if (text == "" || text == "...")
			{
				text = text2;
			}
		}
		else
		{
			int field = FejdStartup.instance.GetField<FejdStartup, int>("m_profileIndex");
			List<PlayerProfile> field2 = FejdStartup.instance.GetField<FejdStartup, List<PlayerProfile>>("m_profiles");
			if (field >= 0 && field < field2.Count)
			{
				text = field2[field].GetName();
			}
			text2 = text;
		}
		VrmManager.PlayerToName[__instance] = text;
		Scene scene = ((Component)__instance).gameObject.scene;
		bool flag = ((Scene)(ref scene)).name == "start";
		if (flag)
		{
			foreach (string item in new List<string>(VrmManager.VrmDic.Keys))
			{
				if (VrmManager.VrmDic[item].Source == VRM.SourceType.Shared)
				{
					VrmManager.VrmDic.Remove(item);
					Settings.RemoveSettings(item);
				}
			}
			VrmController.CleanupLoadings();
		}
		___m_nview.GetZDO();
		((Component)__instance).gameObject.AddComponent<VrmController>();
		if (string.IsNullOrEmpty(text))
		{
			return;
		}
		bool settingsUpdated = false;
		string path = Path.Combine(Environment.CurrentDirectory, "ValheimVRM", text + ".vrm");
		string path2 = Path.Combine(Environment.CurrentDirectory, "ValheimVRM", "Shared", text + ".vrm");
		if (!Settings.ContainsSettings(text) || (Settings.globalSettings.ReloadInMenu && flag))
		{
			if (File.Exists(path))
			{
				Settings.AddSettingsFromFile(text, shared: false);
				settingsUpdated = true;
			}
			else if (File.Exists(path2))
			{
				Settings.AddSettingsFromFile(text, shared: true);
				settingsUpdated = true;
			}
		}
		VRM vrm = null;
		Settings.VrmSettingsContainer settings = Settings.GetSettings(text);
		if (settings != null)
		{
			if (!VrmManager.VrmDic.ContainsKey(text) || (Settings.globalSettings.ReloadInMenu && flag))
			{
				if (File.Exists(path))
				{
					if (text2 == text)
					{
						byte[] array = File.ReadAllBytes(path);
						GameObject val = VRM.ImportVisual(array, path, settings.ModelScale);
						if ((Object)(object)val != (Object)null)
						{
							vrm = CreateVrm(val, __instance, array, text);
						}
					}
					else
					{
						((MonoBehaviour)CoroutineHelper.Instance).StartCoroutine(LoadVrm(__instance, text, text2, path, settings.ModelScale, settingsUpdated, settings));
					}
				}
				else if (File.Exists(path2))
				{
					if (text2 == text)
					{
						byte[] array2 = File.ReadAllBytes(path2);
						GameObject val2 = VRM.ImportVisual(array2, path2, settings.ModelScale);
						if ((Object)(object)val2 != (Object)null)
						{
							vrm = CreateVrm(val2, __instance, array2, text, isShared: true);
						}
					}
					else
					{
						((MonoBehaviour)CoroutineHelper.Instance).StartCoroutine(LoadVrm(__instance, text, text2, path2, settings.ModelScale, settingsUpdated, settings, isShared: true));
					}
				}
				else if (!VrmManager.VrmDic.ContainsKey("___Default"))
				{
					string path3 = Path.Combine(Environment.CurrentDirectory, "ValheimVRM", "___Default.vrm");
					if (File.Exists(path3))
					{
						if (text2 == text)
						{
							byte[] array3 = File.ReadAllBytes(path3);
							GameObject val3 = VRM.ImportVisual(array3, path3, settings.ModelScale);
							if ((Object)(object)val3 != (Object)null)
							{
								vrm = CreateVrm(val3, __instance, array3, text);
							}
						}
						else
						{
							((MonoBehaviour)CoroutineHelper.Instance).StartCoroutine(LoadVrm(__instance, "___Default", text2, path3, settings.ModelScale, settingsUpdated, settings));
						}
					}
				}
				else
				{
					vrm = VrmManager.VrmDic["___Default"];
				}
			}
			else
			{
				vrm = VrmManager.VrmDic[text];
			}
		}
		else
		{
			Debug.LogError((object)"Settings are still null");
		}
		SetVrm(__instance, vrm, settingsUpdated);
	}

	private static void SetVrm(Player player, VRM vrm, bool settingsUpdated)
	{
		if (vrm != null)
		{
			if (settingsUpdated)
			{
				vrm.RecalculateSettingsHash();
			}
			((MonoBehaviour)CoroutineHelper.Instance).StartCoroutine(vrm.SetToPlayer(player));
		}
	}

	private static VRM CreateVrm(GameObject vrmVisual, Player player, byte[] bytes, string name, bool isShared = false)
	{
		VRM vrm = new VRM(vrmVisual, name);
		vrm = VrmManager.RegisterVrm(vrm, ((Component)player).GetComponentInChildren<LODGroup>(), player);
		if (vrm != null)
		{
			vrm.Src = bytes;
			vrm.RecalculateSrcBytesHash();
			if (isShared)
			{
				vrm.Source = VRM.SourceType.Shared;
			}
		}
		return vrm;
	}

	private static IEnumerator LoadVrm(Player player, string playerName, string localPlayerName, string path, float scale, bool settingsUpdated, Settings.VrmSettingsContainer settings, bool isShared = false)
	{
		Task<byte[]> bytesTask = Task.Run(() => File.ReadAllBytes(path));
		while (!bytesTask.IsCompleted)
		{
			yield return (object)new WaitUntil((Func<bool>)(() => bytesTask.IsCompleted));
		}
		if (bytesTask.IsFaulted)
		{
			Debug.LogError((object)$"Error loading VRM: {bytesTask.Exception.Flatten().InnerException}");
			yield break;
		}
		yield return ((MonoBehaviour)player).StartCoroutine(VRM.ImportVisualAsync(bytesTask.Result, path, settings.ModelScale, delegate(GameObject loadedRoot)
		{
			if ((Object)(object)loadedRoot != (Object)null)
			{
				VRM vRM = CreateVrm(loadedRoot, player, bytesTask.Result, playerName, isShared);
				if (vRM != null)
				{
					SetVrm(player, vRM, settingsUpdated);
				}
			}
		}));
	}
}
public class VRM
{
	public enum SourceType
	{
		Local,
		Shared
	}

	public class Timer : IDisposable
	{
		private Stopwatch stopwatch;

		private string name;

		public Timer(string name)
		{
			this.name = name;
			stopwatch = Stopwatch.StartNew();
		}

		public void Dispose()
		{
			stopwatch.Stop();
			Debug.Log((object)$"{name} took {stopwatch.ElapsedMilliseconds} ms");
		}
	}

	public byte[] Src;

	public byte[] SrcHash;

	public byte[] SettingsHash;

	public SourceType Source;

	public GameObject VisualModel { get; private set; }

	public string Name { get; private set; }

	public VRM(GameObject visualModel, string name)
	{
		VisualModel = visualModel;
		Name = name;
	}

	~VRM()
	{
		if ((Object)(object)VisualModel != (Object)null)
		{
			Object.Destroy((Object)(object)VisualModel);
		}
	}

	public void RecalculateSrcBytesHash()
	{
		Task.Run(delegate
		{
			using MD5 mD = MD5.Create();
			byte[] srcHash = mD.ComputeHash(Src);
			lock (this)
			{
				SrcHash = srcHash;
			}
		});
	}

	public void RecalculateSettingsHash()
	{
		Task.Run(delegate
		{
			using MD5 mD = MD5.Create();
			byte[] bytes = Encoding.ASCII.GetBytes(Settings.GetSettings(Name).ToStringDiffOnly());
			lock (this)
			{
				SettingsHash = mD.ComputeHash(bytes);
			}
		});
	}

	public static GameObject ImportVisual(byte[] buf, string path, float scale)
	{
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0086: Expected O, but got Unknown
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Expected O, but got Unknown
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Expected O, but got Unknown
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		Debug.Log((object)("[ValheimVRM] loading vrm: " + buf.Length + " bytes"));
		try
		{
			GltfData val = new GlbBinaryParser(buf, path).Parse();
			RuntimeGltfInstance val2 = null;
			try
			{
				VRMImporterContext val3 = new VRMImporterContext(new VRMData(val), (IReadOnlyDictionary<SubAssetKey, Object>)null, (ITextureDeserializer)null, (IMaterialDescriptorGenerator)null, false);
				try
				{
					val2 = ImporterContextExtensions.Load((ImporterContext)(object)val3);
				}
				catch (TypeLoadException ex)
				{
					Debug.LogError((object)("Failed to load type: " + ex.TypeName));
					Debug.LogError((object)ex);
				}
			}
			catch (NotVrm0Exception)
			{
				Debug.Log((object)"[ValheimVRM] Not Vrm0, Trying VRM10");
				Vrm10Importer val4 = new Vrm10Importer(Vrm10Data.Parse(val), (IReadOnlyDictionary<SubAssetKey, Object>)null, (ITextureDeserializer)null, (IMaterialDescriptorGenerator)null, false);
				try
				{
					val2 = ImporterContextExtensions.Load((ImporterContext)(object)val4);
				}
				catch (TypeLoadException ex2)
				{
					Debug.LogError((object)("Failed to load type: " + ex2.TypeName));
					Debug.LogError((object)ex2);
				}
			}
			val2.ShowMeshes();
			val2.Root.transform.localScale = Vector3.one * scale;
			Debug.Log((object)"[ValheimVRM] VRM read successful");
			return val2.Root;
		}
		catch (Exception ex3)
		{
			Debug.LogError((object)ex3);
		}
		return null;
	}

	public static IEnumerator ImportVisualAsync(byte[] buf, string path, float scale, Action<GameObject> onCompleted)
	{
		Debug.Log((object)("[ValheimVRM Async] loading vrm: " + buf.Length + " bytes"));
		Task<GltfData> dataTask = Task.Run(() => new GlbBinaryParser(buf, path).Parse());
		while (!dataTask.IsCompleted)
		{
			yield return (object)new WaitUntil((Func<bool>)(() => dataTask.IsCompleted));
		}
		Task<RuntimeGltfInstance> loader = null;
		bool maybeVrm10 = false;
		Task<VRMData> vrm0Task = Task.Run((Func<VRMData>)(() => new VRMData(dataTask.Result)));
		while (!vrm0Task.IsCompleted)
		{
			yield return (object)new WaitUntil((Func<bool>)(() => vrm0Task.IsCompleted));
		}
		if (vrm0Task.IsFaulted)
		{
			if (vrm0Task.Exception.InnerException is NotVrm0Exception)
			{
				maybeVrm10 = true;
			}
		}
		else
		{
			VRMImporterContext val = new VRMImporterContext(vrm0Task.Result, (IReadOnlyDictionary<SubAssetKey, Object>)null, (ITextureDeserializer)(object)new TextureDeserializerAsync(), (IMaterialDescriptorGenerator)null, false);
			loader = ((ImporterContext)val).LoadAsync((IAwaitCaller)new RuntimeOnlyAwaitCaller(0.001f), (Func<string, IDisposable>)null);
		}
		if (maybeVrm10)
		{
			Debug.Log((object)"[ValheimVRM] Not Vrm0, Trying VRM10");
			Task<Vrm10Data> vrmTask = Task.Run(() => Vrm10Data.Parse(dataTask.Result));
			while (!vrmTask.IsCompleted)
			{
				yield return (object)new WaitUntil((Func<bool>)(() => vrmTask.IsCompleted));
			}
			Vrm10Importer val2 = new Vrm10Importer(vrmTask.Result, (IReadOnlyDictionary<SubAssetKey, Object>)null, (ITextureDeserializer)(object)new TextureDeserializerAsync(), (IMaterialDescriptorGenerator)null, false);
			loader = ((ImporterContext)val2).LoadAsync((IAwaitCaller)new RuntimeOnlyAwaitCaller(0.001f), (Func<string, IDisposable>)null);
		}
		if (loader == null)
		{
			Debug.LogError((object)"Loader was not initialized.");
			yield break;
		}
		while (!loader.IsCompleted)
		{
			yield return (object)new WaitUntil((Func<bool>)(() => loader.IsCompleted));
		}
		if (loader.IsFaulted)
		{
			Debug.LogError((object)("Error during VRM loading: " + loader.Exception.Flatten()));
		}
		RuntimeGltfInstance loaded = loader.Result;
		foreach (Renderer visibleRenderer in loaded.VisibleRenderers)
		{
			visibleRenderer.enabled = true;
			yield return null;
		}
		loaded.Root.transform.localScale = Vector3.one * scale;
		Debug.Log((object)"[ValheimVRM] VRM read successful");
		onCompleted(loaded.Root);
	}

	public static async Task<GameObject> ImportVisualAsync(byte[] buf, string path, float scale)
	{
		Debug.Log((object)("[ValheimVRM Async] loading vrm: " + buf.Length + " bytes"));
		VRMData val = new VRMData(new GlbBinaryParser(buf, path).Parse());
		VRMImporterContext loader = new VRMImporterContext(val, (IReadOnlyDictionary<SubAssetKey, Object>)null, (ITextureDeserializer)null, (IMaterialDescriptorGenerator)null, false);
		RuntimeGltfInstance val2;
		try
		{
			val2 = await ((ImporterContext)loader).LoadAsync((IAwaitCaller)new RuntimeOnlyAwaitCaller(0.001f), (Func<string, IDisposable>)null);
		}
		finally
		{
			((IDisposable)loader)?.Dispose();
		}
		try
		{
			val2.ShowMeshes();
			val2.Root.transform.localScale = Vector3.one * scale;
			Debug.Log((object)"[ValheimVRM] VRM read successful");
			return val2.Root;
		}
		catch (Exception ex)
		{
			Debug.LogError((object)("Error during VRM loading: " + ex));
		}
		return null;
	}

	public IEnumerator SetToPlayer(Player player)
	{
		Animator animator = ((Component)player).GetComponentInChildren<Animator>();
		VrmController component = ((Component)player).GetComponent<VrmController>();
		Settings.VrmSettingsContainer settings = Settings.GetSettings(Name);
		player.m_maxInteractDistance *= settings.InteractionDistanceScale;
		GameObject vrmModel = Object.Instantiate<GameObject>(VisualModel);
		VrmManager.PlayerToVrmInstance[player] = vrmModel;
		((Object)vrmModel).name = "VRM_Visual";
		vrmModel.SetActive(true);
		component.visual = vrmModel;
		Transform val = ((Component)animator).transform.parent.Find("VRM_Visual");
		if ((Object)(object)val != (Object)null)
		{
			Object.Destroy((Object)(object)val);
		}
		vrmModel.transform.SetParent(((Component)animator).transform.parent, false);
		float playerHeight = settings.PlayerHeight;
		float playerRadius = settings.PlayerRadius;
		Rigidbody component2 = ((Component)player).GetComponent<Rigidbody>();
		CapsuleCollider component3 = ((Component)player).GetComponent<CapsuleCollider>();
		component3.height = playerHeight;
		component3.radius = playerRadius;
		component3.center = new Vector3(0f, playerHeight / 2f, 0f);
		component2.centerOfMass = component3.center;
		yield return null;
		SkinnedMeshRenderer[] componentsInChildren = ((Character)player).GetVisual().GetComponentsInChildren<SkinnedMeshRenderer>();
		foreach (SkinnedMeshRenderer obj in componentsInChildren)
		{
			((Renderer)obj).forceRenderingOff = true;
			obj.updateWhenOffscreen = true;
			yield return null;
		}
		Animator orgAnim = AccessTools.FieldRefAccess<Player, Animator>(player, "m_animator");
		orgAnim.keepAnimatorStateOnDisable = true;
		orgAnim.cullingMode = (AnimatorCullingMode)0;
		yield return null;
		vrmModel.transform.localPosition = ((Component)orgAnim).transform.localPosition;
		VRMAnimationSync component4 = vrmModel.GetComponent<VRMAnimationSync>();
		if ((Object)(object)component4 == (Object)null)
		{
			component4 = vrmModel.AddComponent<VRMAnimationSync>();
			component4.Setup(orgAnim, settings);
		}
		else
		{
			component4.Setup(orgAnim, settings);
		}
		yield return null;
		if (settings.FixCameraHeight)
		{
			Transform boneTransform = animator.GetBoneTransform((HumanBodyBones)21);
			if ((Object)(object)boneTransform == (Object)null)
			{
				boneTransform = animator.GetBoneTransform((HumanBodyBones)10);
			}
			if ((Object)(object)boneTransform == (Object)null)
			{
				boneTransform = animator.GetBoneTransform((HumanBodyBones)9);
			}
			if ((Object)(object)boneTransform != (Object)null)
			{
				VRMEyePositionSync component5 = ((Component)player).gameObject.GetComponent<VRMEyePositionSync>();
				if ((Object)(object)component5 == (Object)null)
				{
					component5 = ((Component)player).gameObject.AddComponent<VRMEyePositionSync>();
					component5.Setup(boneTransform);
				}
				else
				{
					component5.Setup(boneTransform);
				}
			}
		}
		yield return null;
		if (settings.UseMToonShader)
		{
			MToonColorSync component6 = vrmModel.GetComponent<MToonColorSync>();
			if ((Object)(object)component6 == (Object)null)
			{
				component6 = vrmModel.AddComponent<MToonColorSync>();
				component6.Setup(vrmModel);
			}
			else
			{
				component6.Setup(vrmModel);
			}
		}
		yield return null;
		VRMSpringBone[] componentsInChildren2 = vrmModel.GetComponentsInChildren<VRMSpringBone>();
		foreach (VRMSpringBone obj2 in componentsInChildren2)
		{
			obj2.m_stiffnessForce *= settings.SpringBoneStiffness;
			obj2.m_gravityPower *= settings.SpringBoneGravityPower;
			obj2.m_updateType = (SpringBoneUpdateType)1;
			obj2.m_center = null;
			yield return null;
		}
		((Component)player).GetComponent<VrmController>().ReloadSpringBones();
	}
}
[DefaultExecutionOrder(int.MaxValue)]
public class VRMAnimationSync : MonoBehaviour
{
	private Animator orgAnim;

	private Animator vrmAnim;

	private HumanPoseHandler orgPose;

	private HumanPoseHandler vrmPose;

	private HumanPose hp;

	private bool ragdoll;

	private Settings.VrmSettingsContainer settings;

	private Vector3? adjustPos;

	private int oldStateHash;

	private const int FirstTime = -161139084;

	private const int Usually = 229373857;

	private const int FirstRise = -1536343465;

	private const int RiseUp = -805461806;

	private const int StartToSitDown = 890925016;

	private const int SittingIdle = -1544306596;

	private const int StandingUpFromSit = -805461806;

	private const int SittingChair = -1829310159;

	private const int SittingThrone = 1271596;

	private const int SittingShip = -675369009;

	private const int StartSleeping = 337039637;

	private const int Sleeping = -1603096;

	private const int GetUpFromBed = -496559199;

	private const int Crouch = -2015693266;

	private const int HoldingMast = -2110678410;

	private const int HoldingDragon = -2076823180;

	private static List<int> adjustHipHashes = new List<int> { -1829310159, 1271596, -675369009, -1603096 };

	public void Setup(Animator orgAnim, Settings.VrmSettingsContainer settings, bool isRagdoll = false)
	{
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		ragdoll = isRagdoll;
		this.settings = settings;
		this.orgAnim = orgAnim;
		vrmAnim = ((Component)this).GetComponent<Animator>();
		vrmAnim.applyRootMotion = true;
		vrmAnim.updateMode = orgAnim.updateMode;
		vrmAnim.feetPivotActive = orgAnim.feetPivotActive;
		vrmAnim.layersAffectMassCenter = orgAnim.layersAffectMassCenter;
		vrmAnim.stabilizeFeet = orgAnim.stabilizeFeet;
		PoseHandlerCreate(orgAnim, vrmAnim);
	}

	private void PoseHandlerCreate(Animator org, Animator vrm)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Expected O, but got Unknown
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Expected O, but got Unknown
		OnDestroy();
		orgPose = new HumanPoseHandler(org.avatar, ((Component)org).transform);
		vrmPose = new HumanPoseHandler(vrm.avatar, ((Component)vrm).transform);
	}

	private void OnDestroy()
	{
		if (orgPose != null)
		{
			orgPose.Dispose();
		}
		if (vrmPose != null)
		{
			vrmPose.Dispose();
		}
	}

	private Vector3 StateHashToOffset(int stateHash, out float interpSpeed)
	{
		//IL_008c: 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_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: 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_0074: 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_00b0: Unknown result type (might be due to invalid IL or missing references)
		interpSpeed = Time.deltaTime * 5f;
		switch (stateHash)
		{
		case -1544306596:
		case 890925016:
			return settings.SittingIdleOffset;
		case -1829310159:
			return settings.SittingOnChairOffset;
		case 1271596:
			return settings.SittingOnThroneOffset;
		case -675369009:
			return settings.SittingOnShipOffset;
		case -2110678410:
			return settings.HoldingMastOffset;
		case -2076823180:
			return settings.HoldingDragonOffset;
		case -1603096:
			return settings.SleepingOffset;
		default:
			interpSpeed = 1f;
			return Vector3.zero;
		}
	}

	private void Update()
	{
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: 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_005b: 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)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		((Component)vrmAnim).transform.localPosition = Vector3.zero;
		if (!ragdoll)
		{
			for (int i = 0; i < 55; i++)
			{
				Transform boneTransform = orgAnim.GetBoneTransform((HumanBodyBones)i);
				Transform boneTransform2 = vrmAnim.GetBoneTransform((HumanBodyBones)i);
				if (i > 0 && (Object)(object)boneTransform != (Object)null && (Object)(object)boneTransform2 != (Object)null)
				{
					if (i == 5 || i == 6)
					{
						boneTransform.position = boneTransform2.position;
					}
					else
					{
						boneTransform.position = boneTransform2.position + Vector3.up * settings.ModelOffsetY;
					}
				}
			}
		}
		Transform transform = ((Component)vrmAnim).transform;
		transform.localPosition += Vector3.up * settings.ModelOffsetY;
	}

	private void LateUpdate()
	{
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: 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_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: 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_00fc: 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_00bb: 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_00d3: 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_00db: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_010a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_0118: 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_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_017c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0181: Unknown result type (might be due to invalid IL or missing references)
		//IL_0183: Unknown result type (might be due to invalid IL or missing references)
		//IL_0185: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0158: 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_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0162: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_0205: Unknown result type (might be due to invalid IL or missing references)
		//IL_020a: Unknown result type (might be due to invalid IL or missing references)
		//IL_020e: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fb: 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_01d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0191: 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_01a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_021e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Unknown result type (might be due to invalid IL or missing references)
		//IL_029d: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
		float num = settings.PlayerHeight / 1.85f;
		((Component)vrmAnim).transform.localPosition = Vector3.zero;
		orgPose.GetHumanPose(ref hp);
		vrmPose.SetHumanPose(ref hp);
		AnimatorStateInfo currentAnimatorStateInfo = orgAnim.GetCurrentAnimatorStateInfo(0);
		int shortNameHash = ((AnimatorStateInfo)(ref currentAnimatorStateInfo)).shortNameHash;
		AnimatorStateInfo nextAnimatorStateInfo = orgAnim.GetNextAnimatorStateInfo(0);
		int shortNameHash2 = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).shortNameHash;
		Transform boneTransform = vrmAnim.GetBoneTransform((HumanBodyBones)0);
		Transform boneTransform2 = orgAnim.GetBoneTransform((HumanBodyBones)0);
		boneTransform.position = orgAnim.GetBoneTransform((HumanBodyBones)0).position;
		Vector3 val = Vector3.zero;
		if (!adjustHipHashes.Contains(shortNameHash))
		{
			Vector3 val2 = boneTransform2.position - boneTransform2.parent.position;
			val = val2 * num - val2;
		}
		float interpSpeed = Time.deltaTime * 5f;
		Vector3 val3 = StateHashToOffset(shortNameHash, out interpSpeed);
		if (val3 != Vector3.zero)
		{
			val += ((Component)boneTransform2).transform.rotation * val3;
		}
		Vector3 val4 = Vector3.zero;
		float num3;
		Vector3 val7;
		if (shortNameHash2 != 0)
		{
			if (!adjustHipHashes.Contains(shortNameHash2))
			{
				Vector3 val5 = boneTransform2.position - boneTransform2.parent.position;
				val4 = val5 * num - val5;
			}
			float interpSpeed2 = Time.deltaTime * 5f;
			Vector3 val6 = StateHashToOffset(shortNameHash2, out interpSpeed2);
			if (val6 != Vector3.zero)
			{
				val4 += ((Component)boneTransform2).transform.rotation * val6;
			}
			float num2 = Mathf.Clamp01(((AnimatorStateInfo)(ref nextAnimatorStateInfo)).normalizedTime * ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length / 0.5f);
			num3 = Mathf.Lerp(interpSpeed, interpSpeed2, num2);
			val7 = Vector3.Lerp(val, val4, num2);
		}
		else
		{
			num3 = interpSpeed;
			val7 = val;
		}
		adjustPos = (adjustPos.HasValue ? Vector3.Lerp(adjustPos.Value, val7, num3) : val);
		boneTransform.position += adjustPos.Value;
		if (!ragdoll)
		{
			for (int i = 0; i < 55; i++)
			{
				Transform boneTransform3 = orgAnim.GetBoneTransform((HumanBodyBones)i);
				Transform boneTransform4 = vrmAnim.GetBoneTransform((HumanBodyBones)i);
				if (i > 0 && (Object)(object)boneTransform3 != (Object)null && (Object)(object)boneTransform4 != (Object)null)
				{
					if (i == 5 || i == 6)
					{
						boneTransform3.position = boneTransform4.position;
					}
					else
					{
						boneTransform3.position = boneTransform4.position + Vector3.up * settings.ModelOffsetY;
					}
				}
			}
		}
		Transform transform = ((Component)vrmAnim).transform;
		transform.localPosition += Vector3.up * settings.ModelOffsetY;
		oldStateHash = shortNameHash;
	}
}
public class VrmController : MonoBehaviour
{
	private class LoadingProcess
	{
		public bool UseExistingData;

		public List<byte[]> Packets = new List<byte[]>();

		public bool PacketsDone;

		public bool UseExistingSettings;

		public string Settings;

		public bool SettingsDone;

		public bool IsLoaded()
		{
			if (UseExistingData || PacketsDone)
			{
				if (!UseExistingSettings)
				{
					return SettingsDone;
				}
				return true;
			}
			return false;
		}

		public byte[] GetVrmData()
		{
			int num = 0;
			foreach (byte[] packet in Packets)
			{
				num += packet.Length;
			}
			byte[] array = new byte[num];
			int num2 = 0;
			foreach (byte[] packet2 in Packets)
			{
				Array.Copy(packet2, 0, array, num2, packet2.Length);
				num2 += packet2.Length;
			}
			return array;
		}
	}

	private class SpringBoneState
	{
		public VRMSpringBone SpringBone;

		public Vector3 InitialGravityForce;
	}

	private class WindItem
	{
		public float Time;

		public Vector3 Dir;

		public float Rise;

		public float Sit;

		public float MaxFactor;

		public Vector3 CachedWindForce;
	}

	private const int MaxPacketSize = 512000;

	private static Dictionary<string, LoadingProcess> _activeLoadings = new Dictionary<string, LoadingProcess>();

	private static Material _playerSizeGizmoMaterial;

	private ZNetView view;

	private Player player;

	private string playerName;

	public GameObject visual;

	private CapsuleCollider playerCollider;

	private GameObject playerSizeGizmo;

	private SpringBoneState[] springBones = new SpringBoneState[0];

	private Vector2 windIntervalRange = new Vector2(0.7f, 1.9f);

	private float windDirRange = 0.2f;

	private Vector2 windRiseRange = new Vector2(0.4f, 0.6f);

	private Vector2 windSitRange = new Vector2(1.3f, 1.8f);

	private Vector2 windStrengthRange = new Vector2(0.03f, 0.12f);

	private WindItem[] windItems;

	private float windCoverPercentage;

	private float windCoverUpdateTimer;

	private Vector3[] windCoverRays;

	public static VrmController GetLocalController()
	{
		VrmController[] array = Object.FindObjectsOfType<VrmController>();
		foreach (VrmController vrmController in array)
		{
			if ((vrmController.view.GetZDO() != null && vrmController.view.IsOwner()) || vrmController.view.GetZDO() == null)
			{
				return vrmController;
			}
		}
		return null;
	}

	private string GetPeerName(long peerId)
	{
		ZNet instance = ZNet.instance;
		return ((instance == null) ? null : instance.GetPeer(peerId)?.m_playerName) ?? peerId.ToString();
	}

	public void ReloadSpringBones()
	{
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		SpringBoneState[] array = springBones;
		foreach (SpringBoneState springBoneState in array)
		{
			if ((Object)(object)springBoneState.SpringBone != (Object)null)
			{
				springBoneState.SpringBone.m_gravityDir = ((Vector3)(ref springBoneState.InitialGravityForce)).normalized;
				springBoneState.SpringBone.m_gravityPower = ((Vector3)(ref springBoneState.InitialGravityForce)).magnitude;
			}
		}
		springBones = (from bone in ((Component)this).GetComponentsInChildren<VRMSpringBone>()
			select new SpringBoneState
			{
				SpringBone = bone,
				InitialGravityForce = bone.m_gravityDir * bone.m_gravityPower
			}).ToArray();
		windItems = new WindItem[(!Settings.globalSettings.AllowIndividualWinds) ? 1 : springBones.Length];
		for (int j = 0; j < windItems.Length; j++)
		{
			windItems[j] = new WindItem();
		}
		windCoverUpdateTimer = 0f;
	}

	public void ResetSpringBonesWind()
	{
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		SpringBoneState[] array = springBones;
		foreach (SpringBoneState springBoneState in array)
		{
			if ((Object)(object)springBoneState.SpringBone != (Object)null)
			{
				springBoneState.SpringBone.m_gravityDir = ((Vector3)(ref springBoneState.InitialGravityForce)).normalized;
				springBoneState.SpringBone.m_gravityPower = ((Vector3)(ref springBoneState.InitialGravityForce)).magnitude;
			}
		}
	}

	private void Awake()
	{
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Expected O, but got Unknown
		//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
		view = ((Component)this).GetComponent<ZNetView>();
		player = ((Component)this).GetComponent<Player>();
		if ((Object)(object)_playerSizeGizmoMaterial == (Object)null)
		{
			_playerSizeGizmoMaterial = new Material(Shader.Find("Standard"));
			_playerSizeGizmoMaterial.SetFloat("_Mode", 2f);
			_playerSizeGizmoMaterial.SetInt("_SrcBlend", 5);
			_playerSizeGizmoMaterial.SetInt("_DstBlend", 10);
			_playerSizeGizmoMaterial.SetInt("_ZWrite", 0);
			_playerSizeGizmoMaterial.DisableKeyword("_ALPHATEST_ON");
			_playerSizeGizmoMaterial.EnableKeyword("_ALPHABLEND_ON");
			_playerSizeGizmoMaterial.DisableKeyword("_ALPHAPREMULTIPLY_ON");
			_playerSizeGizmoMaterial.SetFloat("_GlossMapScale", 0f);
			_playerSizeGizmoMaterial.renderQueue = 3000;
			_playerSizeGizmoMaterial.color = new Color(1f, 0f, 0f, 0.3f);
		}
		playerCollider = ((Component)this).GetComponent<CapsuleCollider>();
		if (Settings.globalSettings.DrawPlayerSizeGizmo)
		{
			ActivateSizeGizmo();
		}
		if ((Object)(object)Game.instance != (Object)null)
		{
			playerName = ((Component)this).GetComponent<Player>().GetPlayerName();
			if (playerName == "" || playerName == "...")
			{
				playerName = Game.instance.GetPlayerProfile().GetName();
			}
		}
		else
		{
			int field = FejdStartup.instance.GetField<FejdStartup, int>("m_profileIndex");
			List<PlayerProfile> field2 = FejdStartup.instance.GetField<FejdStartup, List<PlayerProfile>>("m_profiles");
			if (field >= 0 && field < field2.Count)
			{
				playerName = field2[field].GetName();
			}
		}
		if (view.GetZDO() != null)
		{
			view.Register("RPC_QueryAll", (Action<long>)RPC_QueryAll);
			view.Register<string, ZPackage, ZPackage>("RPC_SendHashes", (Action<long, string, ZPackage, ZPackage>)RPC_SendHashes);
			view.Register<string>("RPC_QueryData", (Action<long, string>)RPC_QueryData);
			view.Register<string, ZPackage>("RPC_SendDataPacket", (Action<long, string, ZPackage>)RPC_SendDataPacket);
			view.Register<string, int>("RPC_DataPacketCallback", (Action<long, string, int>)RPC_DataPacketCallback);
			view.Register<string>("RPC_QuerySettings", (Action<long, string>)RPC_QuerySettings);
			view.Register<string, string>("RPC_SendSettings", (Action<long, string, string>)RPC_SendSettings);
		}
	}

	private void Update()
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: 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)
		//IL_006e: 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_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_008c: 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_0099: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)playerCollider == (Object)null) && !((Object)(object)playerSizeGizmo == (Object)null))
		{
			Transform transform = playerSizeGizmo.transform;
			Bounds bounds = ((Collider)playerCollider).bounds;
			transform.position = ((Bounds)(ref bounds)).center;
			Transform transform2 = playerSizeGizmo.transform;
			bounds = ((Collider)playerCollider).bounds;
			float x = ((Bounds)(ref bounds)).size.x;
			bounds = ((Collider)playerCollider).bounds;
			float num = ((Bounds)(ref bounds)).size.y / 2f;
			bounds = ((Collider)playerCollider).bounds;
			transform2.localScale = new Vector3(x, num, ((Bounds)(ref bounds)).size.z);
		}
	}

	private void FixedUpdate()
	{
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a6: 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_01e2: 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)
		//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_02af: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0321: Unknown result type (might be due to invalid IL or missing references)
		//IL_0326: Unknown result type (might be due to invalid IL or missing references)
		//IL_032b: Unknown result type (might be due to invalid IL or missing references)
		//IL_033d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0342: Unknown result type (might be due to invalid IL or missing references)
		if (springBones.Length == 0 || Settings.globalSettings.ForceWindDisabled)
		{
			return;
		}
		EnvMan instance = EnvMan.instance;
		Vector3 val = ((instance != null) ? instance.GetWindDir() : Vector3.back);
		EnvMan instance2 = EnvMan.instance;
		float num = ((instance2 != null) ? instance2.GetWindIntensity() : 0.3f);
		windCoverUpdateTimer -= Time.deltaTime;
		if (windCoverUpdateTimer < 0f)
		{
			windCoverUpdateTimer = 1f;
			int mask = LayerMask.GetMask(new string[6] { "Default", "static_solid", "Default_small", "piece", "terrain", "vehicle" });
			windCoverPercentage = 0f;
			Vector3[] array = windCoverRays;
			RaycastHit val4 = default(RaycastHit);
			foreach (Vector3 val2 in array)
			{
				Vector3 val3 = Quaternion.LookRotation(-val) * val2;
				if (Physics.Raycast(((Character)player).GetCenterPoint() + val3 * 0.5f, val3, ref val4, 29.5f, mask))
				{
					windCoverPercentage += 1f;
				}
			}
			windCoverPercentage /= windCoverRays.Length;
		}
		WindItem[] array2 = windItems;
		foreach (WindItem windItem in array2)
		{
			windItem.Time -= Time.deltaTime;
			if (windItem.Time < 0f)
			{
				windItem.Time = Random.Range(windIntervalRange.x, windIntervalRange.y);
				Vector3 val5 = val + new Vector3(Random.Range(0f - windDirRange, windDirRange), Random.Range(0f - windDirRange, windDirRange), Random.Range(0f - windDirRange, windDirRange));
				windItem.Dir = ((Vector3)(ref val5)).normalized;
				windItem.Rise = Random.Range(windRiseRange.x, windRiseRange.y);
				windItem.Sit = Random.Range(windSitRange.x, windSitRange.y);
				windItem.MaxFactor = Random.Range(windStrengthRange.x, windStrengthRange.y);
			}
			float num2 = ((windItem.Time < windItem.Rise) ? (windItem.MaxFactor * windItem.Time / windItem.Rise) : (windItem.MaxFactor * (1f - (windItem.Time - windItem.Rise) / windItem.Sit)));
			windItem.CachedWindForce = windItem.Dir * (num2 * (num * Mathf.Lerp(1f, 0.1f, windCoverPercentage) * 3f));
		}
		for (int j = 0; j < springBones.Length; j++)
		{
			Vector3 val6 = springBones[j].InitialGravityForce + (Settings.globalSettings.AllowIndividualWinds ? windItems[j] : windItems[0]).CachedWindForce;
			springBones[j].SpringBone.m_gravityDir = ((Vector3)(ref val6)).normalized;
			springBones[j].SpringBone.m_gravityPower = ((Vector3)(ref val6)).magnitude;
		}
	}

	public void ActivateSizeGizmo()
	{
		if (!((Object)(object)playerSizeGizmo != (Object)null))
		{
			playerSizeGizmo = GameObject.CreatePrimitive((PrimitiveType)2);
			((Renderer)playerSizeGizmo.GetComponent<MeshRenderer>()).material = _playerSizeGizmoMaterial;
			Object.Destroy((Object)(object)playerSizeGizmo.GetComponent<Collider>());
		}
	}

	public void DeactivateSizeGizmo()
	{
		if (!((Object)(object)playerSizeGizmo == (Object)null))
		{
			Object.Destroy((Object)(object)playerSizeGizmo);
		}
	}

	public static void CleanupLoadings()
	{
		_activeLoadings.Clear();
	}

	private void SendDataPacket(long target, string vrmName, int packetIndex)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Expected O, but got Unknown
		VRM vRM = VrmManager.VrmDic[vrmName];
		int num = Mathf.CeilToInt((float)vRM.Src.Length / 512000f);
		ZPackage val = new ZPackage();
		if (packetIndex >= num)
		{
			val.Write(false);
			view.InvokeRPC(target, "RPC_SendDataPacket", new object[2] { vrmName, val });
			return;
		}
		int num2 = ((packetIndex < num - 1) ? 512000 : (vRM.Src.Length % num));
		byte[] array = new byte[num2];
		Array.Copy(vRM.Src, packetIndex * 512000, array, 0, num2);
		val.Write(true);
		val.Write(packetIndex);
		val.Write(num);
		val.Write(array);
		view.InvokeRPC(target, "RPC_SendDataPacket", new object[2] { vrmName, val });
		Debug.Log((object)$"[ValheimVRM] sent {vrmName} packet {packetIndex + 1} of {num} to {GetPeerName(target)}");
	}

	public void ShareVrm(bool delay = true)
	{
		if (view.GetZDO() != null && view.IsOwner())
		{
			if (delay)
			{
				((MonoBehaviour)this).StartCoroutine("ShareVrmDelayed");
			}
			else
			{
				DoShareVrm();
			}
		}
	}

	public IEnumerator ShareVrmDelay

valheim_Data/Managed/AsyncImageLoader.Runtime.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Threading.Tasks;
using Unity.Burst;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using Unity.Mathematics;
using Unity.Profiling;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
public static class AsyncImageLoader
{
	public struct LoaderSettings
	{
		public bool linear;

		public bool markNonReadable;

		public bool generateMipmap;

		public bool autoMipmapCount;

		public int mipmapCount;

		public FreeImage.Format format;

		public bool logException;

		public static LoaderSettings Default
		{
			get
			{
				LoaderSettings result = default(LoaderSettings);
				result.linear = false;
				result.markNonReadable = false;
				result.generateMipmap = true;
				result.autoMipmapCount = true;
				result.format = FreeImage.Format.FIF_UNKNOWN;
				result.logException = true;
				return result;
			}
		}
	}

	public static class FreeImage
	{
		public enum Format
		{
			FIF_UNKNOWN = -1,
			FIF_BMP = 0,
			FIF_ICO = 1,
			FIF_JPEG = 2,
			FIF_JNG = 3,
			FIF_KOALA = 4,
			FIF_LBM = 5,
			FIF_IFF = 5,
			FIF_MNG = 6,
			FIF_PBM = 7,
			FIF_PBMRAW = 8,
			FIF_PCD = 9,
			FIF_PCX = 10,
			FIF_PGM = 11,
			FIF_PGMRAW = 12,
			FIF_PNG = 13,
			FIF_PPM = 14,
			FIF_PPMRAW = 15,
			FIF_RAS = 16,
			FIF_TARGA = 17,
			FIF_TIFF = 18,
			FIF_WBMP = 19,
			FIF_PSD = 20,
			FIF_CUT = 21,
			FIF_XBM = 22,
			FIF_XPM = 23,
			FIF_DDS = 24,
			FIF_GIF = 25,
			FIF_HDR = 26,
			FIF_FAXG3 = 27,
			FIF_SGI = 28,
			FIF_EXR = 29,
			FIF_J2K = 30,
			FIF_JP2 = 31,
			FIF_PFM = 32,
			FIF_PICT = 33,
			FIF_RAW = 34,
			FIF_WEBP = 35,
			FIF_JXR = 36
		}

		internal enum Type
		{
			FIT_UNKNOWN,
			FIT_BITMAP,
			FIT_UINT16,
			FIT_INT16,
			FIT_UINT32,
			FIT_INT32,
			FIT_FLOAT,
			FIT_DOUBLE,
			FIT_COMPLEX,
			FIT_RGB16,
			FIT_RGBA16,
			FIT_RGBF,
			FIT_RGBAF
		}

		[Flags]
		internal enum LoadFlags
		{
			DEFAULT = 0,
			GIF_LOAD256 = 1,
			GIF_PLAYBACK = 2,
			ICO_MAKEALPHA = 1,
			JPEG_FAST = 1,
			JPEG_ACCURATE = 2,
			JPEG_CMYK = 4,
			JPEG_EXIFROTATE = 8,
			PCD_BASE = 1,
			PCD_BASEDIV4 = 2,
			PCD_BASEDIV16 = 3,
			PNG_IGNOREGAMMA = 1,
			TARGA_LOAD_RGB888 = 1,
			TIFF_CMYK = 1,
			RAW_PREVIEW = 1,
			RAW_DISPLAY = 2
		}

		private const string FreeImageLibrary = "FreeImage";

		[DllImport("FreeImage", EntryPoint = "FreeImage_IsLittleEndian")]
		internal static extern bool IsLittleEndian();

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetFileTypeFromMemory")]
		internal static extern Format GetFileTypeFromMemory(IntPtr memory, int size);

		[DllImport("FreeImage", EntryPoint = "FreeImage_OpenMemory")]
		internal static extern IntPtr OpenMemory(IntPtr data, uint size_in_bytes);

		[DllImport("FreeImage", EntryPoint = "FreeImage_CloseMemory")]
		internal static extern IntPtr CloseMemory(IntPtr data);

		[DllImport("FreeImage", EntryPoint = "FreeImage_LoadFromMemory")]
		internal static extern IntPtr LoadFromMemory(Format format, IntPtr stream, int flags);

		[DllImport("FreeImage", EntryPoint = "FreeImage_Unload")]
		internal static extern void Unload(IntPtr dib);

		[DllImport("FreeImage", EntryPoint = "FreeImage_ConvertToRawBits")]
		internal static extern void ConvertToRawBits(IntPtr bits, IntPtr dib, int pitch, uint bpp, uint red_mask, uint green_mask, uint blue_mask, bool topdown);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetWidth")]
		internal static extern uint GetWidth(IntPtr handle);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetHeight")]
		internal static extern uint GetHeight(IntPtr handle);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetImageType")]
		internal static extern Type GetImageType(IntPtr dib);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetBPP")]
		internal static extern int GetBPP(IntPtr dib);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetBits")]
		internal static extern IntPtr GetBits(IntPtr dib);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetLine")]
		internal static extern int GetLine(IntPtr dib);

		[DllImport("FreeImage", EntryPoint = "FreeImage_GetPitch")]
		internal static extern int GetPitch(IntPtr dib);
	}

	private interface IMipmapJob<TChannel> : IJobParallelFor where TChannel : struct
	{
		int2 InputSize { get; set; }

		int2 OutputSize { get; set; }

		NativeSlice<TChannel> InputChannel { get; set; }

		NativeSlice<TChannel> OutputChannel { get; set; }
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct ByteChannelMipmapJob : IMipmapJob<byte>, IJobParallelFor
	{
		[ReadOnly]
		private NativeSlice<byte> _inputChannel;

		[WriteOnly]
		private NativeSlice<byte> _outputChannel;

		public int2 InputSize { get; set; }

		public int2 OutputSize { get; set; }

		public NativeSlice<byte> InputChannel
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return _inputChannel;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				_inputChannel = value;
			}
		}

		public NativeSlice<byte> OutputChannel
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return _outputChannel;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				_outputChannel = value;
			}
		}

		public void Execute(int outputIndex)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			int2 val = math.int2(outputIndex % OutputSize.x, outputIndex / OutputSize.x);
			int2 val2 = math.int2(0);
			uint num = 0u;
			val2.y = 0;
			while (val2.y < 2)
			{
				val2.x = 0;
				while (val2.x < 2)
				{
					int2 val3 = math.min(math.mad(int2.op_Implicit(2), val, val2), InputSize - 1);
					int num2 = math.mad(InputSize.x, val3.y, val3.x);
					num += _inputChannel[num2];
					val2.x++;
				}
				val2.y++;
			}
			_outputChannel[outputIndex] = (byte)(num >> 2);
		}
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct ShortChannelMipmapJob : IMipmapJob<short>, IJobParallelFor
	{
		[ReadOnly]
		private NativeSlice<short> _inputChannel;

		[WriteOnly]
		private NativeSlice<short> _outputChannel;

		public int2 InputSize { get; set; }

		public int2 OutputSize { get; set; }

		public NativeSlice<short> InputChannel
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return _inputChannel;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				_inputChannel = value;
			}
		}

		public NativeSlice<short> OutputChannel
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return _outputChannel;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				_outputChannel = value;
			}
		}

		public void Execute(int outputIndex)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			int2 val = math.int2(outputIndex % OutputSize.x, outputIndex / OutputSize.x);
			int2 val2 = math.int2(0);
			int num = 0;
			val2.y = 0;
			while (val2.y < 2)
			{
				val2.x = 0;
				while (val2.x < 2)
				{
					int2 val3 = math.min(math.mad(int2.op_Implicit(2), val, val2), InputSize - 1);
					int num2 = math.mad(InputSize.x, val3.y, val3.x);
					num += _inputChannel[num2];
					val2.x++;
				}
				val2.y++;
			}
			_outputChannel[outputIndex] = (short)(num >> 2);
		}
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct FloatChannelMipmapJob : IMipmapJob<float>, IJobParallelFor
	{
		[ReadOnly]
		private NativeSlice<float> _inputChannel;

		[WriteOnly]
		private NativeSlice<float> _outputChannel;

		public int2 InputSize { get; set; }

		public int2 OutputSize { get; set; }

		public NativeSlice<float> InputChannel
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return _inputChannel;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				_inputChannel = value;
			}
		}

		public NativeSlice<float> OutputChannel
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return _outputChannel;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				_outputChannel = value;
			}
		}

		public void Execute(int outputIndex)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_0042: 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_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: 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_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: 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)
			int2 val = math.int2(outputIndex % OutputSize.x, outputIndex / OutputSize.x);
			int2 val2 = math.int2(0);
			float num = 0f;
			val2.y = 0;
			while (val2.y < 2)
			{
				val2.x = 0;
				while (val2.x < 2)
				{
					int2 val3 = math.min(math.mad(int2.op_Implicit(2), val, val2), InputSize - 1);
					int num2 = math.mad(InputSize.x, val3.y, val3.x);
					num += _inputChannel[num2];
					val2.x++;
				}
				val2.y++;
			}
			_outputChannel[outputIndex] = 0.25f * num;
		}
	}

	private interface IPixel<TChannel> where TChannel : struct
	{
		static int ChannelCount()
		{
			throw new NotImplementedException();
		}

		static int ChannelByteCount()
		{
			throw new NotImplementedException();
		}
	}

	private struct R16Pixel : IPixel<short>
	{
		public short r;

		public static int ChannelCount()
		{
			return 1;
		}

		public static int ChannelByteCount()
		{
			return 2;
		}
	}

	private struct RFloatPixel : IPixel<float>
	{
		public float r;

		public static int ChannelCount()
		{
			return 1;
		}

		public static int ChannelByteCount()
		{
			return 4;
		}
	}

	private struct RGB24Pixel : IPixel<byte>
	{
		public byte r;

		public byte g;

		public byte b;

		public static int ChannelCount()
		{
			return 3;
		}

		public static int ChannelByteCount()
		{
			return 1;
		}
	}

	private struct RGB48Pixel : IPixel<short>
	{
		public short r;

		public short g;

		public short b;

		public static int ChannelCount()
		{
			return 3;
		}

		public static int ChannelByteCount()
		{
			return 2;
		}
	}

	private struct RGBA32Pixel : IPixel<byte>
	{
		public byte r;

		public byte g;

		public byte b;

		public byte a;

		public static int ChannelCount()
		{
			return 4;
		}

		public static int ChannelByteCount()
		{
			return 1;
		}
	}

	private struct RGBA64Pixel : IPixel<short>
	{
		public short r;

		public short g;

		public short b;

		public short a;

		public static int ChannelCount()
		{
			return 4;
		}

		public static int ChannelByteCount()
		{
			return 2;
		}
	}

	private struct RGBAFloatPixel : IPixel<float>
	{
		public float r;

		public float g;

		public float b;

		public float a;

		public static int ChannelCount()
		{
			return 4;
		}

		public static int ChannelByteCount()
		{
			return 4;
		}
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct TransferImageToTextureJob : IJobParallelFor
	{
		public int bytesPerLine;

		public int bytesPerScanline;

		[NativeDisableUnsafePtrRestriction]
		public IntPtr bitsPtr;

		[WriteOnly]
		public NativeSlice<byte> textureData;

		public unsafe void Execute(int rowIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			UnsafeUtility.MemCpy((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + rowIndex * bytesPerLine), (bitsPtr + rowIndex * bytesPerScanline).ToPointer(), (long)bytesPerLine);
		}
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct TransferBGR24ImageToRGB24TextureJob : IJobParallelFor
	{
		public int bytesPerScanline;

		public int width;

		[NativeDisableUnsafePtrRestriction]
		public IntPtr bitsPtr;

		[WriteOnly]
		public NativeSlice<byte> textureData;

		public unsafe void Execute(int rowIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: 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)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: 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_0093: 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)
			NativeSlice<RGB24Pixel> val = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGB24Pixel>((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + (nint)(rowIndex * width) * (nint)sizeof(RGB24Pixel)), sizeof(RGB24Pixel), width);
			NativeSlice<RGB24Pixel> val2 = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGB24Pixel>((bitsPtr + rowIndex * bytesPerScanline).ToPointer(), sizeof(RGB24Pixel), width);
			val.SliceWithStride<byte>(0).CopyFrom(val2.SliceWithStride<byte>(2));
			val.SliceWithStride<byte>(1).CopyFrom(val2.SliceWithStride<byte>(1));
			val.SliceWithStride<byte>(2).CopyFrom(val2.SliceWithStride<byte>(0));
		}
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct TransferBGRA32ImageToRGBA32TextureJob : IJobParallelFor
	{
		public int bytesPerScanline;

		public int width;

		[NativeDisableUnsafePtrRestriction]
		public IntPtr bitsPtr;

		[WriteOnly]
		public NativeSlice<byte> textureData;

		public unsafe void Execute(int rowIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: 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)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: 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_0093: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			NativeSlice<RGBA32Pixel> val = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGBA32Pixel>((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + (nint)(rowIndex * width) * (nint)sizeof(RGBA32Pixel)), sizeof(RGBA32Pixel), width);
			NativeSlice<RGBA32Pixel> val2 = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGBA32Pixel>((bitsPtr + rowIndex * bytesPerScanline).ToPointer(), sizeof(RGBA32Pixel), width);
			val.SliceWithStride<byte>(0).CopyFrom(val2.SliceWithStride<byte>(2));
			val.SliceWithStride<byte>(1).CopyFrom(val2.SliceWithStride<byte>(1));
			val.SliceWithStride<byte>(2).CopyFrom(val2.SliceWithStride<byte>(0));
			val.SliceWithStride<byte>(3).CopyFrom(val2.SliceWithStride<byte>(3));
		}
	}

	[BurstCompile(CompileSynchronously = true)]
	private struct TransferRGBFloatImageToRGBAFloatTextureJob : IJobParallelFor
	{
		public int bytesPerScanline;

		public int width;

		[NativeDisableUnsafePtrRestriction]
		public IntPtr bitsPtr;

		[WriteOnly]
		public NativeSlice<byte> textureData;

		public unsafe void Execute(int rowIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			NativeSlice<RGBAFloatPixel> val = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGBAFloatPixel>((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + (nint)(rowIndex * width) * (nint)sizeof(RGBAFloatPixel)), sizeof(RGBAFloatPixel), width);
			NativeSlice<float> val2 = val.SliceWithStride<float>(12);
			UnsafeUtility.MemCpyStride(NativeSliceUnsafeUtility.GetUnsafePtr<RGBAFloatPixel>(val), val.Stride, (bitsPtr + rowIndex * bytesPerScanline).ToPointer(), 12, 12, width);
			for (int i = 0; i < val2.Length; i++)
			{
				val2[i] = 1f;
			}
		}
	}

	private class ImageImporter : IDisposable
	{
		private static readonly ProfilerMarker ConstructorMarker = new ProfilerMarker("ImageImporter.Constructor");

		private static readonly ProfilerMarker CreateNewTextureMarker = new ProfilerMarker("ImageImporter.CreateNewTexture");

		private static readonly ProfilerMarker LoadIntoTextureMarker = new ProfilerMarker("ImageImporter.LoadIntoTexture");

		private LoaderSettings _loaderSettings;

		private IntPtr _bitmap;

		private int _width;

		private int _height;

		private TextureFormat _textureFormat;

		private int _bytesPerPixel;

		private int _imageBitsPerPixel;

		private FreeImage.Type _imageType;

		public ImageImporter(byte[] imageData, LoaderSettings loaderSettings)
		{
			//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)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			ProfilerMarker constructorMarker = ConstructorMarker;
			AutoScope val = ((ProfilerMarker)(ref constructorMarker)).Auto();
			try
			{
				_loaderSettings = loaderSettings;
				_bitmap = IntPtr.Zero;
				IntPtr intPtr = IntPtr.Zero;
				try
				{
					intPtr = FreeImage.OpenMemory(Marshal.UnsafeAddrOfPinnedArrayElement(imageData, 0), (uint)imageData.Length);
					if (_loaderSettings.format == FreeImage.Format.FIF_UNKNOWN)
					{
						_loaderSettings.format = FreeImage.GetFileTypeFromMemory(intPtr, imageData.Length);
					}
					if (_loaderSettings.format == FreeImage.Format.FIF_UNKNOWN)
					{
						throw new Exception("Cannot automatically determine the image format. Consider explicitly specifying image format.");
					}
					_bitmap = FreeImage.LoadFromMemory(_loaderSettings.format, intPtr, 2);
					_width = (int)FreeImage.GetWidth(_bitmap);
					_height = (int)FreeImage.GetHeight(_bitmap);
					_imageBitsPerPixel = FreeImage.GetBPP(_bitmap);
					_imageType = FreeImage.GetImageType(_bitmap);
					if (_width > MaxTextureSize || _height > MaxTextureSize)
					{
						Dispose();
						throw new Exception("Texture size exceed maximum dimension supported by Unity.");
					}
					DetermineTextureFormat();
				}
				finally
				{
					if (intPtr != IntPtr.Zero)
					{
						FreeImage.CloseMemory(intPtr);
					}
				}
			}
			finally
			{
				((IDisposable)(AutoScope)(ref val)).Dispose();
			}
		}

		public void Dispose()
		{
			if (_bitmap != IntPtr.Zero)
			{
				FreeImage.Unload(_bitmap);
				_bitmap = IntPtr.Zero;
			}
		}

		public Texture2D CreateTexture()
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			int mipmapCount = GetMipmapCount();
			return new Texture2D(_width, _height, _textureFormat, mipmapCount, _loaderSettings.linear);
		}

		public void ReinitializeTexture(Texture2D texture)
		{
			//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)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			int width = ((Texture)texture).width;
			int height = ((Texture)texture).height;
			TextureFormat format = texture.format;
			bool flag = ((Texture)texture).mipmapCount > 1;
			int width2 = _width;
			int height2 = _height;
			TextureFormat textureFormat = _textureFormat;
			bool generateMipmap = _loaderSettings.generateMipmap;
			if (width != width2 || height != height2 || format != textureFormat || flag != generateMipmap)
			{
				texture.Reinitialize(_width, _height, _textureFormat, _loaderSettings.generateMipmap);
			}
		}

		public Texture2D CreateNewTexture()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: 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_000d: 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)
			ProfilerMarker createNewTextureMarker = CreateNewTextureMarker;
			AutoScope val = ((ProfilerMarker)(ref createNewTextureMarker)).Auto();
			try
			{
				Texture2D val2 = CreateTexture();
				JobHandle val3 = ProcessImage(val2);
				((JobHandle)(ref val3)).Complete();
				val2.Apply(false, _loaderSettings.markNonReadable);
				return val2;
			}
			finally
			{
				((IDisposable)(AutoScope)(ref val)).Dispose();
			}
		}

		public async Task<Texture2D> CreateNewTextureAsync()
		{
			Texture2D texture = CreateTexture();
			JobHandle dependency = ProcessImage(texture);
			while (!((JobHandle)(ref dependency)).IsCompleted)
			{
				await Task.Yield();
			}
			((JobHandle)(ref dependency)).Complete();
			texture.Apply(false, _loaderSettings.markNonReadable);
			return texture;
		}

		public void LoadIntoTexture(Texture2D texture)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: 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_000d: 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)
			ProfilerMarker loadIntoTextureMarker = LoadIntoTextureMarker;
			AutoScope val = ((ProfilerMarker)(ref loadIntoTextureMarker)).Auto();
			try
			{
				ReinitializeTexture(texture);
				JobHandle val2 = ProcessImage(texture);
				((JobHandle)(ref val2)).Complete();
				texture.Apply(false, _loaderSettings.markNonReadable);
			}
			finally
			{
				((IDisposable)(AutoScope)(ref val)).Dispose();
			}
		}

		public async Task LoadIntoTextureAsync(Texture2D texture)
		{
			ReinitializeTexture(texture);
			JobHandle dependency = ProcessImage(texture);
			while (!((JobHandle)(ref dependency)).IsCompleted)
			{
				await Task.Yield();
			}
			((JobHandle)(ref dependency)).Complete();
			texture.Apply(false, _loaderSettings.markNonReadable);
		}

		private int GetMipmapCount()
		{
			if (!_loaderSettings.generateMipmap)
			{
				return 1;
			}
			int num = Mathf.FloorToInt(Mathf.Log((float)Mathf.Max(_width, _height), 2f)) + 1;
			num = Mathf.Clamp(num, 2, MaxMipmapLevel);
			if (!_loaderSettings.autoMipmapCount)
			{
				num = Mathf.Clamp(_loaderSettings.mipmapCount, 2, num);
			}
			return num;
		}

		private int2 GetMipmapSize(int mipmapLevel)
		{
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			if (mipmapLevel == 0)
			{
				return math.int2(_width, _height);
			}
			float num = Mathf.Pow(2f, (float)(-mipmapLevel));
			int num2 = Mathf.Max(1, Mathf.FloorToInt(num * (float)_width));
			int num3 = Mathf.Max(1, Mathf.FloorToInt(num * (float)_height));
			return math.int2(num2, num3);
		}

		private void DetermineTextureFormat()
		{
			//IL_0093: 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_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			switch (_imageType)
			{
			case FreeImage.Type.FIT_BITMAP:
				switch (_imageBitsPerPixel)
				{
				case 24:
					_textureFormat = (TextureFormat)3;
					_bytesPerPixel = 3;
					break;
				case 32:
					_textureFormat = (TextureFormat)4;
					_bytesPerPixel = 4;
					break;
				default:
					throw new Exception($"Bitmap bitdepth not supported: {_imageBitsPerPixel}");
				}
				break;
			case FreeImage.Type.FIT_UINT16:
			case FreeImage.Type.FIT_INT16:
				_textureFormat = (TextureFormat)9;
				_bytesPerPixel = 2;
				break;
			case FreeImage.Type.FIT_FLOAT:
				_textureFormat = (TextureFormat)18;
				_bytesPerPixel = 4;
				break;
			case FreeImage.Type.FIT_RGB16:
				_textureFormat = (TextureFormat)73;
				_bytesPerPixel = 6;
				break;
			case FreeImage.Type.FIT_RGBA16:
				_textureFormat = (TextureFormat)74;
				_bytesPerPixel = 8;
				break;
			case FreeImage.Type.FIT_RGBF:
			case FreeImage.Type.FIT_RGBAF:
				_textureFormat = (TextureFormat)20;
				_bytesPerPixel = 16;
				break;
			default:
				throw new Exception($"Image type not supported: {_imageType}. Please submit a new GitHub issue if you want this type to be supported.");
			}
		}

		public JobHandle ProcessImage(Texture2D texture)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: 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_0010: 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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: 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)
			JobHandle dependency = ScheduleLoadTextureDataJob(texture);
			return ScheduleMipmapJobForEachLevels(texture, dependency);
		}

		public JobHandle ScheduleLoadTextureDataJob(Texture2D texture, JobHandle dependency = default(JobHandle))
		{
			//IL_0003: 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_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: 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_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: 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_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: 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_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			NativeSlice<byte> textureData = GetTextureData(texture, 0);
			IntPtr bits = FreeImage.GetBits(_bitmap);
			int line = FreeImage.GetLine(_bitmap);
			int pitch = FreeImage.GetPitch(_bitmap);
			if (FreeImage.IsLittleEndian() && _imageType == FreeImage.Type.FIT_BITMAP)
			{
				switch (_imageBitsPerPixel)
				{
				case 24:
				{
					TransferBGR24ImageToRGB24TextureJob transferBGR24ImageToRGB24TextureJob = default(TransferBGR24ImageToRGB24TextureJob);
					transferBGR24ImageToRGB24TextureJob.bytesPerScanline = pitch;
					transferBGR24ImageToRGB24TextureJob.width = _width;
					transferBGR24ImageToRGB24TextureJob.bitsPtr = bits;
					transferBGR24ImageToRGB24TextureJob.textureData = textureData;
					return IJobParallelForExtensions.Schedule<TransferBGR24ImageToRGB24TextureJob>(transferBGR24ImageToRGB24TextureJob, _height, 1, dependency);
				}
				case 32:
				{
					TransferBGRA32ImageToRGBA32TextureJob transferBGRA32ImageToRGBA32TextureJob = default(TransferBGRA32ImageToRGBA32TextureJob);
					transferBGRA32ImageToRGBA32TextureJob.bytesPerScanline = pitch;
					transferBGRA32ImageToRGBA32TextureJob.width = _width;
					transferBGRA32ImageToRGBA32TextureJob.bitsPtr = bits;
					transferBGRA32ImageToRGBA32TextureJob.textureData = textureData;
					return IJobParallelForExtensions.Schedule<TransferBGRA32ImageToRGBA32TextureJob>(transferBGRA32ImageToRGBA32TextureJob, _height, 1, dependency);
				}
				default:
					throw new Exception($"Bitmap bitdepth not supported: {_imageBitsPerPixel}");
				}
			}
			if (_imageType == FreeImage.Type.FIT_RGBF)
			{
				TransferRGBFloatImageToRGBAFloatTextureJob transferRGBFloatImageToRGBAFloatTextureJob = default(TransferRGBFloatImageToRGBAFloatTextureJob);
				transferRGBFloatImageToRGBAFloatTextureJob.bytesPerScanline = pitch;
				transferRGBFloatImageToRGBAFloatTextureJob.width = _width;
				transferRGBFloatImageToRGBAFloatTextureJob.bitsPtr = bits;
				transferRGBFloatImageToRGBAFloatTextureJob.textureData = textureData;
				return IJobParallelForExtensions.Schedule<TransferRGBFloatImageToRGBAFloatTextureJob>(transferRGBFloatImageToRGBAFloatTextureJob, _height, 1, dependency);
			}
			TransferImageToTextureJob transferImageToTextureJob = default(TransferImageToTextureJob);
			transferImageToTextureJob.bytesPerLine = line;
			transferImageToTextureJob.bytesPerScanline = pitch;
			transferImageToTextureJob.bitsPtr = bits;
			transferImageToTextureJob.textureData = textureData;
			return IJobParallelForExtensions.Schedule<TransferImageToTextureJob>(transferImageToTextureJob, _height, 1, dependency);
		}

		public JobHandle ScheduleMipmapJobForEachLevels(Texture2D texture, JobHandle dependency = default(JobHandle))
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: 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_0010: 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_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Invalid comparison between Unknown and I4
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Invalid comparison between Unknown and I4
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Invalid comparison between Unknown and I4
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Invalid comparison between Unknown and I4
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Invalid comparison between Unknown and I4
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: 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_00c8: 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_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Invalid comparison between Unknown and I4
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: 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_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: 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_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Invalid comparison between Unknown and I4
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Invalid comparison between Unknown and I4
			//IL_0158: 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_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: 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_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: 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_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Invalid comparison between Unknown and I4
			//IL_0114: 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_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: 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_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: 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_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			int2 inputSize = GetMipmapSize(0);
			NativeSlice<byte> inputSlice = GetTextureData(texture, 0);
			int2 mipmapSize;
			NativeSlice<byte> textureData;
			JobHandle val;
			for (int i = 1; i < ((Texture)texture).mipmapCount; dependency = val, inputSize = mipmapSize, inputSlice = textureData, i++)
			{
				mipmapSize = GetMipmapSize(i);
				textureData = GetTextureData(texture, i);
				TextureFormat textureFormat = _textureFormat;
				if ((int)textureFormat <= 9)
				{
					if ((int)textureFormat == 3)
					{
						val = ScheduleMipmapJobForEachChannels<byte, RGB24Pixel, ByteChannelMipmapJob>(RGB24Pixel.ChannelCount(), RGB24Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
					if ((int)textureFormat == 4)
					{
						val = ScheduleMipmapJobForEachChannels<byte, RGBA32Pixel, ByteChannelMipmapJob>(RGBA32Pixel.ChannelCount(), RGBA32Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
					if ((int)textureFormat == 9)
					{
						val = ScheduleMipmapJobForEachChannels<short, R16Pixel, ShortChannelMipmapJob>(R16Pixel.ChannelCount(), R16Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
				}
				else if ((int)textureFormat <= 20)
				{
					if ((int)textureFormat == 18)
					{
						val = ScheduleMipmapJobForEachChannels<float, RFloatPixel, FloatChannelMipmapJob>(RFloatPixel.ChannelCount(), RFloatPixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
					if ((int)textureFormat == 20)
					{
						val = ScheduleMipmapJobForEachChannels<float, RGBAFloatPixel, FloatChannelMipmapJob>(RGBAFloatPixel.ChannelCount(), RGBAFloatPixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
				}
				else
				{
					if ((int)textureFormat == 73)
					{
						val = ScheduleMipmapJobForEachChannels<short, RGB48Pixel, ShortChannelMipmapJob>(RGB48Pixel.ChannelCount(), RGB48Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
					if ((int)textureFormat == 74)
					{
						val = ScheduleMipmapJobForEachChannels<short, RGBA64Pixel, ShortChannelMipmapJob>(RGBA64Pixel.ChannelCount(), RGBA64Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency);
						continue;
					}
				}
				throw new NotSupportedException($"Texture format not supported: {_textureFormat}");
			}
			return dependency;
		}

		private unsafe JobHandle ScheduleMipmapJobForEachChannels<TChannel, TPixel, TMipmapJob>(int channelCount, int channelByteCount, NativeSlice<byte> inputSlice, int2 inputSize, NativeSlice<byte> outputSlice, int2 outputSize, JobHandle dependency) where TChannel : struct where TPixel : struct, IPixel<TChannel> where TMipmapJob : struct, IMipmapJob<TChannel>
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: 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_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			int num = math.min(outputSize.x, outputSize.y);
			NativeSlice<TPixel> val = inputSlice.SliceConvert<TPixel>();
			NativeSlice<TPixel> val2 = outputSlice.SliceConvert<TPixel>();
			for (int i = 0; i < channelCount; i++)
			{
				dependency = IJobParallelForExtensions.Schedule<TMipmapJob>(new TMipmapJob
				{
					InputSize = inputSize,
					OutputSize = outputSize,
					InputChannel = ((NativeSlice<?>*)(&val))->SliceWithStride<TChannel>(i * channelByteCount),
					OutputChannel = ((NativeSlice<?>*)(&val2))->SliceWithStride<TChannel>(i * channelByteCount)
				}, val2.Length, num, dependency);
			}
			return dependency;
		}

		private NativeSlice<byte> GetTextureData(Texture2D texture, int mipmapLevel)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			return NativeSlice<byte>.op_Implicit(texture.GetPixelData<byte>(mipmapLevel));
		}
	}

	private static readonly int MaxTextureSize = SystemInfo.maxTextureSize;

	private static readonly int MaxMipmapLevel = (int)Mathf.Log((float)SystemInfo.maxTextureSize, 2f) + 1;

	public static bool LoadImage(Texture2D texture, byte[] data)
	{
		return LoadImage(texture, data, LoaderSettings.Default);
	}

	public static bool LoadImage(Texture2D texture, byte[] data, bool markNonReadable)
	{
		LoaderSettings @default = LoaderSettings.Default;
		@default.markNonReadable = markNonReadable;
		return LoadImage(texture, data, @default);
	}

	public static bool LoadImage(Texture2D texture, byte[] data, LoaderSettings loaderSettings)
	{
		try
		{
			if (data == null || data.Length == 0)
			{
				throw new Exception("Input data is null or empty.");
			}
			using (ImageImporter imageImporter = new ImageImporter(data, loaderSettings))
			{
				imageImporter.LoadIntoTexture(texture);
			}
			return true;
		}
		catch (Exception ex)
		{
			if (loaderSettings.logException)
			{
				Debug.LogException(ex);
			}
			return false;
		}
	}

	public static Task<bool> LoadImageAsync(Texture2D texture, byte[] data)
	{
		return LoadImageAsync(texture, data, LoaderSettings.Default);
	}

	public static Task<bool> LoadImageAsync(Texture2D texture, byte[] data, bool markNonReadable)
	{
		LoaderSettings @default = LoaderSettings.Default;
		@default.markNonReadable = markNonReadable;
		return LoadImageAsync(texture, data, @default);
	}

	public static async Task<bool> LoadImageAsync(Texture2D texture, byte[] data, LoaderSettings loaderSettings)
	{
		try
		{
			if (data == null || data.Length == 0)
			{
				throw new Exception("Input data is null or empty.");
			}
			using (ImageImporter importer = await Task.Run(() => new ImageImporter(data, loaderSettings)))
			{
				await importer.LoadIntoTextureAsync(texture);
			}
			return true;
		}
		catch (Exception ex)
		{
			if (loaderSettings.logException)
			{
				Debug.LogException(ex);
			}
			return false;
		}
	}

	public static Texture2D CreateFromImage(byte[] data)
	{
		return CreateFromImage(data, LoaderSettings.Default);
	}

	public static Texture2D CreateFromImage(byte[] data, LoaderSettings loaderSettings)
	{
		try
		{
			if (data == null || data.Length == 0)
			{
				throw new Exception("Input data is null or empty.");
			}
			using ImageImporter imageImporter = new ImageImporter(data, loaderSettings);
			return imageImporter.CreateNewTexture();
		}
		catch (Exception ex)
		{
			if (loaderSettings.logException)
			{
				Debug.LogException(ex);
			}
			return null;
		}
	}

	public static Task<Texture2D> CreateFromImageAsync(byte[] data)
	{
		return CreateFromImageAsync(data, LoaderSettings.Default);
	}

	public static async Task<Texture2D> CreateFromImageAsync(byte[] data, LoaderSettings loaderSettings)
	{
		try
		{
			if (data == null || data.Length == 0)
			{
				throw new Exception("Input data is null or empty.");
			}
			using ImageImporter importer = await Task.Run(() => new ImageImporter(data, loaderSettings));
			return await importer.CreateNewTextureAsync();
		}
		catch (Exception ex)
		{
			if (loaderSettings.logException)
			{
				Debug.LogException(ex);
			}
			return null;
		}
	}
}
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[630]
		{
			0, 0, 0, 2, 0, 0, 0, 90, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 108, 111, 111, 111, 111, 111,
			110, 103, 46, 97, 115, 121, 110, 99, 105, 109,
			97, 103, 101, 108, 111, 97, 100, 101, 114, 64,
			99, 99, 99, 102, 48, 56, 54, 98, 49, 53,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			115, 121, 110, 99, 73, 109, 97, 103, 101, 76,
			111, 97, 100, 101, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 100, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 108, 111, 111, 111, 111, 111, 110, 103,
			46, 97, 115, 121, 110, 99, 105, 109, 97, 103,
			101, 108, 111, 97, 100, 101, 114, 64, 99, 99,
			99, 102, 48, 56, 54, 98, 49, 53, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 115, 121,
			110, 99, 73, 109, 97, 103, 101, 76, 111, 97,
			100, 101, 114, 92, 70, 114, 101, 101, 73, 109,
			97, 103, 101, 46, 99, 115, 0, 0, 0, 5,
			0, 0, 0, 101, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			108, 111, 111, 111, 111, 111, 110, 103, 46, 97,
			115, 121, 110, 99, 105, 109, 97, 103, 101, 108,
			111, 97, 100, 101, 114, 64, 99, 99, 99, 102,
			48, 56, 54, 98, 49, 53, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 65, 115, 121, 110, 99,
			73, 109, 97, 103, 101, 76, 111, 97, 100, 101,
			114, 92, 77, 105, 112, 109, 97, 112, 74, 111,
			98, 115, 46, 99, 115, 0, 0, 0, 9, 0,
			0, 0, 97, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 108,
			111, 111, 111, 111, 111, 110, 103, 46, 97, 115,
			121, 110, 99, 105, 109, 97, 103, 101, 108, 111,
			97, 100, 101, 114, 64, 99, 99, 99, 102, 48,
			56, 54, 98, 49, 53, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 65, 115, 121, 110, 99, 73,
			109, 97, 103, 101, 76, 111, 97, 100, 101, 114,
			92, 80, 105, 120, 101, 108, 115, 46, 99, 115,
			0, 0, 0, 5, 0, 0, 0, 107, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 108, 111, 111, 111, 111, 111,
			110, 103, 46, 97, 115, 121, 110, 99, 105, 109,
			97, 103, 101, 108, 111, 97, 100, 101, 114, 64,
			99, 99, 99, 102, 48, 56, 54, 98, 49, 53,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			115, 121, 110, 99, 73, 109, 97, 103, 101, 76,
			111, 97, 100, 101, 114, 92, 84, 114, 97, 110,
			115, 102, 101, 114, 73, 109, 97, 103, 101, 74,
			111, 98, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 87, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 108,
			111, 111, 111, 111, 111, 110, 103, 46, 97, 115,
			121, 110, 99, 105, 109, 97, 103, 101, 108, 111,
			97, 100, 101, 114, 64, 99, 99, 99, 102, 48,
			56, 54, 98, 49, 53, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 109, 97, 103, 101, 73,
			109, 112, 111, 114, 116, 101, 114, 46, 99, 115
		};
		result.TypesData = new byte[878]
		{
			1, 0, 0, 0, 17, 124, 65, 115, 121, 110,
			99, 73, 109, 97, 103, 101, 76, 111, 97, 100,
			101, 114, 0, 0, 0, 0, 31, 65, 115, 121,
			110, 99, 73, 109, 97, 103, 101, 76, 111, 97,
			100, 101, 114, 124, 76, 111, 97, 100, 101, 114,
			83, 101, 116, 116, 105, 110, 103, 115, 1, 0,
			0, 0, 17, 124, 65, 115, 121, 110, 99, 73,
			109, 97, 103, 101, 76, 111, 97, 100, 101, 114,
			0, 0, 0, 0, 26, 65, 115, 121, 110, 99,
			73, 109, 97, 103, 101, 76, 111, 97, 100, 101,
			114, 124, 70, 114, 101, 101, 73, 109, 97, 103,
			101, 1, 0, 0, 0, 17, 124, 65, 115, 121,
			110, 99, 73, 109, 97, 103, 101, 76, 111, 97,
			100, 101, 114, 0, 0, 0, 0, 27, 65, 115,
			121, 110, 99, 73, 109, 97, 103, 101, 76, 111,
			97, 100, 101, 114, 124, 73, 77, 105, 112, 109,
			97, 112, 74, 111, 98, 0, 0, 0, 0, 37,
			65, 115, 121, 110, 99, 73, 109, 97, 103, 101,
			76, 111, 97, 100, 101, 114, 124, 66, 121, 116,
			101, 67, 104, 97, 110, 110, 101, 108, 77, 105,
			112, 109, 97, 112, 74, 111, 98, 0, 0, 0,
			0, 38, 65, 115, 121, 110, 99, 73, 109, 97,
			103, 101, 76, 111, 97, 100, 101, 114, 124, 83,
			104, 111, 114, 116, 67, 104, 97, 110, 110, 101,
			108, 77, 105, 112, 109, 97, 112, 74, 111, 98,
			0, 0, 0, 0, 38, 65, 115, 121, 110, 99,
			73, 109, 97, 103, 101, 76, 111, 97, 100, 101,
			114, 124, 70, 108, 111, 97, 116, 67, 104, 97,
			110, 110, 101, 108, 77, 105, 112, 109, 97, 112,
			74, 111, 98, 1, 0, 0, 0, 17, 124, 65,
			115, 121, 110, 99, 73, 109, 97, 103, 101, 76,
			111, 97, 100, 101, 114, 0, 0, 0, 0, 23,
			65, 115, 121, 110, 99, 73, 109, 97, 103, 101,
			76, 111, 97, 100, 101, 114, 124, 73, 80, 105,
			120, 101, 108, 0, 0, 0, 0, 25, 65, 115,
			121, 110, 99, 73, 109, 97, 103, 101, 76, 111,
			97, 100, 101, 114, 124, 82, 49, 54, 80, 105,
			120, 101, 108, 0, 0, 0, 0, 28, 65, 115,
			121, 110, 99, 73, 109, 97, 103, 101, 76, 111,
			97, 100, 101, 114, 124, 82, 70, 108, 111, 97,
			116, 80, 105, 120, 101, 108, 0, 0, 0, 0,
			27, 65, 115, 121, 110, 99, 73, 109, 97, 103,
			101, 76, 111, 97, 100, 101, 114, 124, 82, 71,
			66, 50, 52, 80, 105, 120, 101, 108, 0, 0,
			0, 0, 27, 65, 115, 121, 110, 99, 73, 109,
			97, 103, 101, 76, 111, 97, 100, 101, 114, 124,
			82, 71, 66, 52, 56, 80, 105, 120, 101, 108,
			0, 0, 0, 0, 28, 65, 115, 121, 110, 99,
			73, 109, 97, 103, 101, 76, 111, 97, 100, 101,
			114, 124, 82, 71, 66, 65, 51, 50, 80, 105,
			120, 101, 108, 0, 0, 0, 0, 28, 65, 115,
			121, 110, 99, 73, 109, 97, 103, 101, 76, 111,
			97, 100, 101, 114, 124, 82, 71, 66, 65, 54,
			52, 80, 105, 120, 101, 108, 0, 0, 0, 0,
			31, 65, 115, 121, 110, 99, 73, 109, 97, 103,
			101, 76, 111, 97, 100, 101, 114, 124, 82, 71,
			66, 65, 70, 108, 111, 97, 116, 80, 105, 120,
			101, 108, 1, 0, 0, 0, 17, 124, 65, 115,
			121, 110, 99, 73, 109, 97, 103, 101, 76, 111,
			97, 100, 101, 114, 0, 0, 0, 0, 42, 65,
			115, 121, 110, 99, 73, 109, 97, 103, 101, 76,
			111, 97, 100, 101, 114, 124, 84, 114, 97, 110,
			115, 102, 101, 114, 73, 109, 97, 103, 101, 84,
			111, 84, 101, 120, 116, 117, 114, 101, 74, 111,
			98, 0, 0, 0, 0, 52, 65, 115, 121, 110,
			99, 73, 109, 97, 103, 101, 76, 111, 97, 100,
			101, 114, 124, 84, 114, 97, 110, 115, 102, 101,
			114, 66, 71, 82, 50, 52, 73, 109, 97, 103,
			101, 84, 111, 82, 71, 66, 50, 52, 84, 101,
			120, 116, 117, 114, 101, 74, 111, 98, 0, 0,
			0, 0, 54, 65, 115, 121, 110, 99, 73, 109,
			97, 103, 101, 76, 111, 97, 100, 101, 114, 124,
			84, 114, 97, 110, 115, 102, 101, 114, 66, 71,
			82, 65, 51, 50, 73, 109, 97, 103, 101, 84,
			111, 82, 71, 66, 65, 51, 50, 84, 101, 120,
			116, 117, 114, 101, 74, 111, 98, 0, 0, 0,
			0, 59, 65, 115, 121, 110, 99, 73, 109, 97,
			103, 101, 76, 111, 97, 100, 101, 114, 124, 84,
			114, 97, 110, 115, 102, 101, 114, 82, 71, 66,
			70, 108, 111, 97, 116, 73, 109, 97, 103, 101,
			84, 111, 82, 71, 66, 65, 70, 108, 111, 97,
			116, 84, 101, 120, 116, 117, 114, 101, 74, 111,
			98, 1, 0, 0, 0, 17, 124, 65, 115, 121,
			110, 99, 73, 109, 97, 103, 101, 76, 111, 97,
			100, 101, 114, 0, 0, 0, 0, 30, 65, 115,
			121, 110, 99, 73, 109, 97, 103, 101, 76, 111,
			97, 100, 101, 114, 124, 73, 109, 97, 103, 101,
			73, 109, 112, 111, 114, 116, 101, 114
		};
		result.TotalFiles = 6;
		result.TotalTypes = 25;
		result.IsEditorOnly = false;
		return result;
	}
}

valheim_Data/Managed/FastSpringBone.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using Microsoft.CodeAnalysis;
using Unity.Burst;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using UnityEngine;
using UnityEngine.Jobs;
using UnityEngine.Profiling;
using VRM.FastSpringBones.Blittables;
using VRM.FastSpringBones.Components;
using VRM.FastSpringBones.NativeWrappers;
using VRM.FastSpringBones.Registries;
using VRM.FastSpringBones.Schedulers;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class IsUnmanagedAttribute : Attribute
	{
	}
}
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[1762]
		{
			0, 0, 0, 1, 0, 0, 0, 66, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 92, 66, 108, 105, 116, 116, 97, 98,
			108, 101, 115, 92, 66, 108, 105, 116, 116, 97,
			98, 108, 101, 67, 111, 108, 108, 105, 100, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 71, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 66, 108, 105,
			116, 116, 97, 98, 108, 101, 115, 92, 66, 108,
			105, 116, 116, 97, 98, 108, 101, 67, 111, 108,
			108, 105, 100, 101, 114, 71, 114, 111, 117, 112,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			72, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 92, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 115, 92, 66, 108, 105,
			116, 116, 97, 98, 108, 101, 67, 111, 108, 108,
			105, 100, 101, 114, 71, 114, 111, 117, 112, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			67, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 92, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 115, 92, 66, 108, 105,
			116, 116, 97, 98, 108, 101, 67, 111, 108, 108,
			105, 100, 101, 114, 115, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 63, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			92, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			115, 92, 66, 108, 105, 116, 116, 97, 98, 108,
			101, 80, 111, 105, 110, 116, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 64, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 66, 108, 105, 116, 116, 97, 98, 108,
			101, 115, 92, 66, 108, 105, 116, 116, 97, 98,
			108, 101, 80, 111, 105, 110, 116, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 66, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 92, 66, 108, 105, 116, 116, 97,
			98, 108, 101, 115, 92, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 82, 111, 111, 116, 66, 111,
			110, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 67, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 92, 66, 108,
			105, 116, 116, 97, 98, 108, 101, 115, 92, 66,
			108, 105, 116, 116, 97, 98, 108, 101, 84, 114,
			97, 110, 115, 102, 111, 114, 109, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 76, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 67, 111,
			108, 108, 105, 100, 101, 114, 71, 114, 111, 117,
			112, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 72, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 83, 99, 104, 101, 100, 117, 108, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 67, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 82, 111,
			111, 116, 66, 111, 110, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 72, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 78, 97, 116, 105, 118, 101, 87, 114,
			97, 112, 112, 101, 114, 115, 92, 78, 97, 116,
			105, 118, 101, 67, 111, 108, 108, 105, 100, 101,
			114, 71, 114, 111, 117, 112, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 73, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 78, 97, 116, 105, 118, 101, 87, 114,
			97, 112, 112, 101, 114, 115, 92, 78, 97, 116,
			105, 118, 101, 67, 111, 108, 108, 105, 100, 101,
			114, 71, 114, 111, 117, 112, 115, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 66, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 92, 78, 97, 116, 105, 118, 101, 87,
			114, 97, 112, 112, 101, 114, 115, 92, 78, 97,
			116, 105, 118, 101, 80, 111, 105, 110, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 65, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 78, 97, 116,
			105, 118, 101, 87, 114, 97, 112, 112, 101, 114,
			115, 92, 78, 97, 116, 105, 118, 101, 80, 111,
			105, 110, 116, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 68, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 92,
			78, 97, 116, 105, 118, 101, 87, 114, 97, 112,
			112, 101, 114, 115, 92, 78, 97, 116, 105, 118,
			101, 84, 114, 97, 110, 115, 102, 111, 114, 109,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			70, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 92, 82, 101, 103, 105,
			115, 116, 114, 105, 101, 115, 92, 67, 111, 108,
			108, 105, 100, 101, 114, 71, 114, 111, 117, 112,
			82, 101, 103, 105, 115, 116, 114, 121, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 57, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 92, 82, 101, 103, 105, 115, 116,
			114, 105, 101, 115, 92, 82, 101, 103, 105, 115,
			116, 114, 121, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 65, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 92, 82,
			101, 103, 105, 115, 116, 114, 105, 101, 115, 92,
			82, 111, 111, 116, 66, 111, 110, 101, 82, 101,
			103, 105, 115, 116, 114, 121, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 66, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 82, 101, 103, 105, 115, 116, 114, 105,
			101, 115, 92, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 82, 101, 103, 105, 115, 116, 114, 121,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			74, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 92, 83, 99, 104, 101,
			100, 117, 108, 101, 114, 115, 92, 80, 117, 108,
			108, 84, 114, 97, 110, 115, 102, 111, 114, 109,
			74, 111, 98, 83, 99, 104, 101, 100, 117, 108,
			101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 74, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 92, 83, 99,
			104, 101, 100, 117, 108, 101, 114, 115, 92, 80,
			117, 115, 104, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 74, 111, 98, 83, 99, 104, 101, 100,
			117, 108, 101, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 77, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 92,
			83, 99, 104, 101, 100, 117, 108, 101, 114, 115,
			92, 85, 112, 100, 97, 116, 101, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 74, 111, 98,
			83, 99, 104, 101, 100, 117, 108, 101, 114, 46,
			99, 115
		};
		result.TypesData = new byte[1477]
		{
			0, 0, 0, 0, 48, 86, 82, 77, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 115, 124, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 67, 111, 108, 108, 105,
			100, 101, 114, 0, 0, 0, 0, 53, 86, 82,
			77, 46, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 115, 46, 66, 108,
			105, 116, 116, 97, 98, 108, 101, 115, 124, 66,
			108, 105, 116, 116, 97, 98, 108, 101, 67, 111,
			108, 108, 105, 100, 101, 114, 71, 114, 111, 117,
			112, 0, 0, 0, 0, 54, 86, 82, 77, 46,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 115, 46, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 115, 124, 66, 108, 105,
			116, 116, 97, 98, 108, 101, 67, 111, 108, 108,
			105, 100, 101, 114, 71, 114, 111, 117, 112, 115,
			0, 0, 0, 0, 49, 86, 82, 77, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 115, 124, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 67, 111, 108, 108, 105,
			100, 101, 114, 115, 0, 0, 0, 0, 45, 86,
			82, 77, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 66,
			108, 105, 116, 116, 97, 98, 108, 101, 115, 124,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 80,
			111, 105, 110, 116, 0, 0, 0, 0, 46, 86,
			82, 77, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 66,
			108, 105, 116, 116, 97, 98, 108, 101, 115, 124,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 80,
			111, 105, 110, 116, 115, 0, 0, 0, 0, 48,
			86, 82, 77, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 115,
			124, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			82, 111, 111, 116, 66, 111, 110, 101, 0, 0,
			0, 0, 49, 86, 82, 77, 46, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 115, 46, 66, 108, 105, 116, 116, 97, 98,
			108, 101, 115, 124, 66, 108, 105, 116, 116, 97,
			98, 108, 101, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 0, 0, 0, 0, 58, 86, 82, 77,
			46, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 115, 46, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 124, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 67, 111, 108, 108, 105, 100, 101, 114,
			71, 114, 111, 117, 112, 0, 0, 0, 0, 54,
			86, 82, 77, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			124, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 83, 99, 104, 101, 100,
			117, 108, 101, 114, 0, 0, 0, 0, 49, 86,
			82, 77, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 124,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			82, 111, 111, 116, 66, 111, 110, 101, 0, 0,
			0, 0, 54, 86, 82, 77, 46, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 115, 46, 78, 97, 116, 105, 118, 101, 87,
			114, 97, 112, 112, 101, 114, 115, 124, 78, 97,
			116, 105, 118, 101, 67, 111, 108, 108, 105, 100,
			101, 114, 71, 114, 111, 117, 112, 0, 0, 0,
			0, 55, 86, 82, 77, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			115, 46, 78, 97, 116, 105, 118, 101, 87, 114,
			97, 112, 112, 101, 114, 115, 124, 78, 97, 116,
			105, 118, 101, 67, 111, 108, 108, 105, 100, 101,
			114, 71, 114, 111, 117, 112, 115, 0, 0, 0,
			0, 48, 86, 82, 77, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			115, 46, 78, 97, 116, 105, 118, 101, 87, 114,
			97, 112, 112, 101, 114, 115, 124, 78, 97, 116,
			105, 118, 101, 80, 111, 105, 110, 116, 101, 114,
			0, 0, 0, 0, 47, 86, 82, 77, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 78, 97, 116, 105, 118,
			101, 87, 114, 97, 112, 112, 101, 114, 115, 124,
			78, 97, 116, 105, 118, 101, 80, 111, 105, 110,
			116, 115, 0, 0, 0, 0, 50, 86, 82, 77,
			46, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 115, 46, 78, 97, 116,
			105, 118, 101, 87, 114, 97, 112, 112, 101, 114,
			115, 124, 78, 97, 116, 105, 118, 101, 84, 114,
			97, 110, 115, 102, 111, 114, 109, 0, 0, 0,
			0, 52, 86, 82, 77, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			115, 46, 82, 101, 103, 105, 115, 116, 114, 105,
			101, 115, 124, 67, 111, 108, 108, 105, 100, 101,
			114, 71, 114, 111, 117, 112, 82, 101, 103, 105,
			115, 116, 114, 121, 0, 0, 0, 0, 39, 86,
			82, 77, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 82,
			101, 103, 105, 115, 116, 114, 105, 101, 115, 124,
			82, 101, 103, 105, 115, 116, 114, 121, 0, 0,
			0, 0, 47, 86, 82, 77, 46, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 115, 46, 82, 101, 103, 105, 115, 116, 114,
			105, 101, 115, 124, 82, 111, 111, 116, 66, 111,
			110, 101, 82, 101, 103, 105, 115, 116, 114, 121,
			0, 0, 0, 0, 48, 86, 82, 77, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 82, 101, 103, 105, 115,
			116, 114, 105, 101, 115, 124, 84, 114, 97, 110,
			115, 102, 111, 114, 109, 82, 101, 103, 105, 115,
			116, 114, 121, 0, 0, 0, 0, 56, 86, 82,
			77, 46, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 115, 46, 83, 99,
			104, 101, 100, 117, 108, 101, 114, 115, 124, 80,
			117, 108, 108, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 74, 111, 98, 83, 99, 104, 101, 100,
			117, 108, 101, 114, 0, 0, 0, 0, 60, 86,
			82, 77, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 83,
			99, 104, 101, 100, 117, 108, 101, 114, 115, 46,
			80, 117, 108, 108, 84, 114, 97, 110, 115, 102,
			111, 114, 109, 74, 111, 98, 83, 99, 104, 101,
			100, 117, 108, 101, 114, 124, 74, 111, 98, 0,
			0, 0, 0, 56, 86, 82, 77, 46, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 115, 46, 83, 99, 104, 101, 100, 117,
			108, 101, 114, 115, 124, 80, 117, 115, 104, 84,
			114, 97, 110, 115, 102, 111, 114, 109, 74, 111,
			98, 83, 99, 104, 101, 100, 117, 108, 101, 114,
			0, 0, 0, 0, 60, 86, 82, 77, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 83, 99, 104, 101, 100,
			117, 108, 101, 114, 115, 46, 80, 117, 115, 104,
			84, 114, 97, 110, 115, 102, 111, 114, 109, 74,
			111, 98, 83, 99, 104, 101, 100, 117, 108, 101,
			114, 124, 74, 111, 98, 0, 0, 0, 0, 59,
			86, 82, 77, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			83, 99, 104, 101, 100, 117, 108, 101, 114, 115,
			124, 85, 112, 100, 97, 116, 101, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 74, 111, 98,
			83, 99, 104, 101, 100, 117, 108, 101, 114, 0,
			0, 0, 0, 63, 86, 82, 77, 46, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 115, 46, 83, 99, 104, 101, 100, 117,
			108, 101, 114, 115, 46, 85, 112, 100, 97, 116,
			101, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 74, 111, 98, 83, 99, 104, 101, 100, 117,
			108, 101, 114, 124, 74, 111, 98
		};
		result.TotalFiles = 23;
		result.TotalTypes = 26;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace VRM.FastSpringBones.Schedulers
{
	public sealed class PullTransformJobScheduler : IDisposable
	{
		[BurstCompile]
		private struct Job : IJobParallelForTransform
		{
			[NativeDisableUnsafePtrRestriction]
			public unsafe BlittableTransform** TransformPointers;

			public unsafe void Execute(int index, TransformAccess transform)
			{
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				TransformPointers[index]->PullFrom(transform);
			}
		}

		private unsafe BlittableTransform** _transformPointers;

		private TransformAccessArray _transformAccessArray;

		private readonly CustomSampler _sampler = CustomSampler.Create("Schedule CopyFromTransformJob", false);

		private readonly TransformRegistry _transformRegistry;

		private bool _dirty = true;

		private IReadOnlyList<NativeTransform> Targets => _transformRegistry.PullTargets;

		public PullTransformJobScheduler(TransformRegistry transformRegistry)
		{
			_transformRegistry = transformRegistry;
			_transformRegistry.SubscribeOnValueChanged(OnTransformChanged);
		}

		private void OnTransformChanged()
		{
			_dirty = true;
		}

		public unsafe JobHandle Schedule(JobHandle dependOn = default(JobHandle))
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			if (Targets.Count == 0)
			{
				return dependOn;
			}
			if (_dirty)
			{
				ReconstructBuffers();
				_dirty = false;
			}
			Job job = default(Job);
			job.TransformPointers = _transformPointers;
			return IJobParallelForTransformExtensions.Schedule<Job>(job, _transformAccessArray, dependOn);
		}

		private unsafe void ReconstructBuffers()
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			ReleaseBuffers();
			IReadOnlyList<NativeTransform> targets = Targets;
			_transformPointers = (BlittableTransform**)UnsafeUtility.Malloc((long)(sizeof(BlittableTransform*) * targets.Count), 16, (Allocator)4);
			_transformAccessArray = new TransformAccessArray(targets.Count, -1);
			for (int i = 0; i < targets.Count; i++)
			{
				_transformPointers[i] = targets[i].GetUnsafePtr();
				((TransformAccessArray)(ref _transformAccessArray)).Add(targets[i].Transform);
			}
		}

		public void Dispose()
		{
			ReleaseBuffers();
			_transformRegistry.UnSubscribeOnValueChanged(OnTransformChanged);
		}

		private unsafe void ReleaseBuffers()
		{
			if (((TransformAccessArray)(ref _transformAccessArray)).isCreated)
			{
				((TransformAccessArray)(ref _transformAccessArray)).Dispose();
			}
			if (_transformPointers != null)
			{
				UnsafeUtility.Free((void*)_transformPointers, (Allocator)4);
				_transformPointers = null;
			}
		}
	}
	public sealed class PushTransformJobScheduler : IDisposable
	{
		[BurstCompile]
		private struct Job : IJobParallelForTransform
		{
			[NativeDisableUnsafePtrRestriction]
			public unsafe BlittableTransform** TransformPointers;

			public unsafe void Execute(int index, TransformAccess transform)
			{
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				TransformPointers[index]->PushTo(transform);
			}
		}

		private unsafe BlittableTransform** _transformPointers;

		private TransformAccessArray _transformAccessArray;

		private readonly CustomSampler _sampler = CustomSampler.Create("Schedule CopyFromTransformJob", false);

		private readonly TransformRegistry _transformRegistry;

		private bool _dirty = true;

		private IReadOnlyList<NativeTransform> Targets => _transformRegistry.PushTargets;

		public PushTransformJobScheduler(TransformRegistry transformRegistry)
		{
			_transformRegistry = transformRegistry;
			_transformRegistry.SubscribeOnValueChanged(OnTransformChanged);
		}

		private void OnTransformChanged()
		{
			_dirty = true;
		}

		public unsafe JobHandle Schedule(JobHandle dependOn = default(JobHandle))
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			if (Targets.Count == 0)
			{
				return dependOn;
			}
			if (_dirty)
			{
				ReconstructBuffers();
				_dirty = false;
			}
			Job job = default(Job);
			job.TransformPointers = _transformPointers;
			return IJobParallelForTransformExtensions.Schedule<Job>(job, _transformAccessArray, dependOn);
		}

		private unsafe void ReconstructBuffers()
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			ReleaseBuffers();
			IReadOnlyList<NativeTransform> targets = Targets;
			_transformPointers = (BlittableTransform**)UnsafeUtility.Malloc((long)(sizeof(BlittableTransform*) * targets.Count), 16, (Allocator)4);
			_transformAccessArray = new TransformAccessArray(targets.Count, -1);
			for (int i = 0; i < targets.Count; i++)
			{
				_transformPointers[i] = targets[i].GetUnsafePtr();
				((TransformAccessArray)(ref _transformAccessArray)).Add(targets[i].Transform);
			}
		}

		public void Dispose()
		{
			ReleaseBuffers();
			_transformRegistry.UnSubscribeOnValueChanged(OnTransformChanged);
		}

		private unsafe void ReleaseBuffers()
		{
			if (((TransformAccessArray)(ref _transformAccessArray)).isCreated)
			{
				((TransformAccessArray)(ref _transformAccessArray)).Dispose();
			}
			if (_transformPointers != null)
			{
				UnsafeUtility.Free((void*)_transformPointers, (Allocator)4);
				_transformPointers = null;
			}
		}
	}
	public sealed class UpdateSpringBoneJobScheduler : IDisposable
	{
		[BurstCompile]
		private struct Job : IJobParallelFor
		{
			[NativeDisableUnsafePtrRestriction]
			public unsafe BlittableRootBone** RootBonePointers;

			public float DeltaTime;

			public unsafe void Execute(int index)
			{
				RootBonePointers[index]->Update(DeltaTime);
			}
		}

		private unsafe BlittableRootBone** _rootBonePointers;

		private readonly RootBoneRegistry _rootBoneRegistry;

		private readonly CustomSampler _sampler = CustomSampler.Create("Schedule CopyFromTransformJob", false);

		private bool _dirty = true;

		private IReadOnlyList<NativePointer<BlittableRootBone>> Targets => _rootBoneRegistry.Items;

		public UpdateSpringBoneJobScheduler(RootBoneRegistry rootBoneRegistry)
		{
			_rootBoneRegistry = rootBoneRegistry;
			_rootBoneRegistry.SubscribeOnValueChanged(OnRootBoneChanged);
		}

		public void Dispose()
		{
			ReleaseBuffer();
			_rootBoneRegistry.UnSubscribeOnValueChanged(OnRootBoneChanged);
		}

		private void OnRootBoneChanged()
		{
			_dirty = true;
		}

		public unsafe JobHandle Schedule(JobHandle dependOn = default(JobHandle))
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			if (Targets.Count == 0)
			{
				return dependOn;
			}
			if (_dirty)
			{
				ReconstructBuffers();
				_dirty = false;
			}
			Job job = default(Job);
			job.RootBonePointers = _rootBonePointers;
			job.DeltaTime = Time.deltaTime;
			return IJobParallelForExtensions.Schedule<Job>(job, Targets.Count, 0, dependOn);
		}

		private unsafe void ReconstructBuffers()
		{
			ReleaseBuffer();
			_rootBonePointers = (BlittableRootBone**)UnsafeUtility.Malloc((long)(sizeof(BlittableTransform*) * Targets.Count), 16, (Allocator)4);
			for (int i = 0; i < Targets.Count; i++)
			{
				_rootBonePointers[i] = Targets[i].GetUnsafePtr();
			}
		}

		private unsafe void ReleaseBuffer()
		{
			if (_rootBonePointers != null)
			{
				UnsafeUtility.Free((void*)_rootBonePointers, (Allocator)4);
				_rootBonePointers = null;
			}
		}
	}
}
namespace VRM.FastSpringBones.Registries
{
	public sealed class ColliderGroupRegistry : Registry<NativeColliderGroups>
	{
	}
	public class Registry<T>
	{
		private readonly List<T> _items = new List<T>();

		private Action _onValueChanged;

		public IReadOnlyList<T> Items => _items;

		public void Register(T value)
		{
			_items.Add(value);
			_onValueChanged?.Invoke();
		}

		public void Unregister(T value)
		{
			_items.Remove(value);
			_onValueChanged?.Invoke();
		}

		public void SubscribeOnValueChanged(Action action)
		{
			_onValueChanged = (Action)Delegate.Combine(_onValueChanged, action);
		}

		public void UnSubscribeOnValueChanged(Action action)
		{
			_onValueChanged = (Action)Delegate.Remove(_onValueChanged, action);
		}
	}
	public sealed class RootBoneRegistry : Registry<NativePointer<BlittableRootBone>>
	{
	}
	public sealed class TransformRegistry
	{
		private readonly List<NativeTransform> _transforms = new List<NativeTransform>();

		private readonly List<NativeTransform> _pullTargets = new List<NativeTransform>();

		private readonly List<NativeTransform> _pushTargets = new List<NativeTransform>();

		private Action _onValueChanged;

		public IReadOnlyList<NativeTransform> Transforms => _transforms;

		public IReadOnlyList<NativeTransform> PullTargets => _pullTargets;

		public IReadOnlyList<NativeTransform> PushTargets => _pushTargets;

		public void SubscribeOnValueChanged(Action action)
		{
			_onValueChanged = (Action)Delegate.Combine(_onValueChanged, action);
		}

		public void UnSubscribeOnValueChanged(Action action)
		{
			_onValueChanged = (Action)Delegate.Remove(_onValueChanged, action);
		}

		public void Register(NativeTransform nativeTransform, TransformSynchronizationType synchronizationType)
		{
			_transforms.Add(nativeTransform);
			switch (synchronizationType)
			{
			case TransformSynchronizationType.PullOnly:
				_pullTargets.Add(nativeTransform);
				break;
			case TransformSynchronizationType.PushOnly:
				_pushTargets.Add(nativeTransform);
				break;
			default:
				throw new ArgumentOutOfRangeException("synchronizationType", synchronizationType, null);
			}
			_onValueChanged?.Invoke();
		}

		public void Unregister(NativeTransform nativeTransform)
		{
			_transforms.Remove(nativeTransform);
			if (_pullTargets.Contains(nativeTransform))
			{
				_pullTargets.Remove(nativeTransform);
			}
			if (_pushTargets.Contains(nativeTransform))
			{
				_pushTargets.Remove(nativeTransform);
			}
			_onValueChanged?.Invoke();
		}
	}
	public enum TransformSynchronizationType
	{
		PullOnly,
		PushOnly
	}
}
namespace VRM.FastSpringBones.NativeWrappers
{
	public sealed class NativeColliderGroup : IDisposable
	{
		private readonly NativePointer<BlittableColliderGroup> _nativePointer;

		private NativeArray<BlittableCollider> Colliders { get; }

		public unsafe BlittableColliderGroup* GetUnsafePtr()
		{
			return _nativePointer.GetUnsafePtr();
		}

		public unsafe NativeColliderGroup(BlittableCollider[] colliders, NativeTransform nativeTransform)
		{
			//IL_0009: 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_0015: Unknown result type (might be due to invalid IL or missing references)
			Colliders = new NativeArray<BlittableCollider>(colliders, (Allocator)4);
			_nativePointer = new NativePointer<BlittableColliderGroup>(new BlittableColliderGroup(Colliders, nativeTransform.GetUnsafePtr()));
		}

		public void Dispose()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			if (Colliders.IsCreated)
			{
				Colliders.Dispose();
			}
			_nativePointer.Dispose();
		}
	}
	public sealed class NativeColliderGroups : IDisposable
	{
		private readonly NativePointer<BlittableColliderGroups> _nativePointer = new NativePointer<BlittableColliderGroups>();

		private NativeArray<BlittableColliderGroup> _colliderGroupArray;

		private IReadOnlyList<FastSpringBoneColliderGroup> _colliderGroups;

		private bool _isDisposed;

		public IReadOnlyList<FastSpringBoneColliderGroup> ColliderGroups
		{
			get
			{
				return _colliderGroups;
			}
			set
			{
				_colliderGroups = value;
				UpdateColliderGroups();
			}
		}

		public unsafe BlittableColliderGroups* GetUnsafePtr()
		{
			return _nativePointer.GetUnsafePtr();
		}

		public void DrawGizmos()
		{
			_nativePointer.Value.DrawGizmos();
		}

		private void UpdateColliderGroups()
		{
			if (!_isDisposed)
			{
				if (_colliderGroupArray.IsCreated)
				{
					_colliderGroupArray.Dispose();
				}
				CreateColliderGroupArray(_colliderGroups);
				UpdateData();
			}
		}

		public NativeColliderGroups(IReadOnlyList<FastSpringBoneColliderGroup> colliderGroups)
		{
			_colliderGroups = colliderGroups;
			UpdateColliderGroups();
		}

		public void Dispose()
		{
			if (_colliderGroupArray.IsCreated)
			{
				_colliderGroupArray.Dispose();
				_isDisposed = true;
			}
			_nativePointer.Dispose();
		}

		private unsafe void CreateColliderGroupArray(IReadOnlyList<FastSpringBoneColliderGroup> colliderGroups)
		{
			//IL_0009: 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)
			_colliderGroupArray = new NativeArray<BlittableColliderGroup>(colliderGroups.Count, (Allocator)4, (NativeArrayOptions)1);
			for (int i = 0; i < _colliderGroupArray.Length; i++)
			{
				_colliderGroupArray[i] = *colliderGroups[i].ColliderGroupPtr;
			}
		}

		private unsafe void UpdateData()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			_nativePointer.Value = new BlittableColliderGroups((BlittableColliderGroup*)NativeArrayUnsafeUtility.GetUnsafePtr<BlittableColliderGroup>(_colliderGroupArray), _colliderGroupArray.Length);
		}
	}
	public sealed class NativePointer<T> : IDisposable where T : unmanaged
	{
		private unsafe readonly T* _unsafePtr;

		public unsafe T Value
		{
			get
			{
				return *_unsafePtr;
			}
			set
			{
				*_unsafePtr = value;
			}
		}

		public unsafe T* GetUnsafePtr()
		{
			return _unsafePtr;
		}

		public unsafe NativePointer()
		{
			_unsafePtr = (T*)UnsafeUtility.Malloc((long)sizeof(T), 16, (Allocator)4);
		}

		public unsafe NativePointer(T value)
		{
			_unsafePtr = (T*)UnsafeUtility.Malloc((long)sizeof(T), 16, (Allocator)4);
			Value = value;
		}

		public unsafe void Dispose()
		{
			UnsafeUtility.Free((void*)_unsafePtr, (Allocator)4);
		}
	}
	public sealed class NativePoints : IDisposable
	{
		private readonly NativePointer<BlittablePoints> _nativePointer;

		private NativeArray<BlittablePoint> _buffer;

		public unsafe BlittablePoints* GetUnsafePtr()
		{
			return _nativePointer.GetUnsafePtr();
		}

		public unsafe NativePoints(IList<NativePointer<BlittablePoint>> points)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			_buffer = new NativeArray<BlittablePoint>(points.Count, (Allocator)4, (NativeArrayOptions)1);
			for (int i = 0; i < _buffer.Length; i++)
			{
				_buffer[i] = points[i].Value;
			}
			_nativePointer = new NativePointer<BlittablePoints>(new BlittablePoints((BlittablePoint*)NativeArrayUnsafeUtility.GetUnsafePtr<BlittablePoint>(_buffer), _buffer.Length));
		}

		public void Dispose()
		{
			if (_buffer.IsCreated)
			{
				_buffer.Dispose();
			}
			_nativePointer.Dispose();
		}
	}
	public sealed class NativeTransform : IDisposable
	{
		private readonly NativePointer<BlittableTransform> _nativePointer;

		private readonly TransformRegistry _transformRegistry;

		public Transform Transform { get; }

		public BlittableTransform Value => _nativePointer.Value;

		public unsafe BlittableTransform* GetUnsafePtr()
		{
			return _nativePointer.GetUnsafePtr();
		}

		public unsafe NativeTransform(TransformRegistry transformRegistry, TransformSynchronizationType transformSynchronizationType, Transform transform, NativeTransform parent = null)
		{
			_nativePointer = new NativePointer<BlittableTransform>(new BlittableTransform((parent != null) ? parent.GetUnsafePtr() : null, transform));
			Transform = transform;
			_transformRegistry = transformRegistry;
			_transformRegistry.Register(this, transformSynchronizationType);
		}

		public void Dispose()
		{
			_transformRegistry.Unregister(this);
			_nativePointer.Dispose();
		}
	}
}
namespace VRM.FastSpringBones.Components
{
	public sealed class FastSpringBoneColliderGroup : MonoBehaviour
	{
		private NativeTransform _nativeTransform;

		private NativeColliderGroup _nativeColliderGroup;

		public unsafe BlittableColliderGroup* ColliderGroupPtr => _nativeColliderGroup.GetUnsafePtr();

		public void Initialize(TransformRegistry transformRegistry, BlittableCollider[] colliders)
		{
			_nativeTransform = new NativeTransform(transformRegistry, TransformSynchronizationType.PullOnly, ((Component)this).transform);
			_nativeColliderGroup = new NativeColliderGroup(colliders, _nativeTransform);
		}

		private void OnDestroy()
		{
			_nativeTransform?.Dispose();
			_nativeColliderGroup?.Dispose();
		}
	}
	[DefaultExecutionOrder(11000)]
	public sealed class FastSpringBoneScheduler : MonoBehaviour
	{
		[SerializeField]
		private bool showGizmos;

		private CustomSampler _updateSampler;

		private PullTransformJobScheduler _pullTransformJobScheduler;

		private PushTransformJobScheduler _pushTransformJobScheduler;

		private UpdateSpringBoneJobScheduler _updateSpringBoneJobScheduler;

		private RootBoneRegistry _rootBoneRegistry;

		private ColliderGroupRegistry _colliderGroupRegistry;

		private JobHandle _prevJobHandle;

		public bool ShowGizmos
		{
			get
			{
				return showGizmos;
			}
			set
			{
				showGizmos = value;
			}
		}

		public void Initialize(RootBoneRegistry rootBoneRegistry, TransformRegistry transformRegistry, ColliderGroupRegistry colliderGroupRegistry)
		{
			_rootBoneRegistry = rootBoneRegistry;
			_colliderGroupRegistry = colliderGroupRegistry;
			_updateSampler = CustomSampler.Create("FastSpringBone(Update)", false);
			_pullTransformJobScheduler = new PullTransformJobScheduler(transformRegistry);
			_pushTransformJobScheduler = new PushTransformJobScheduler(transformRegistry);
			_updateSpringBoneJobScheduler = new UpdateSpringBoneJobScheduler(_rootBoneRegistry);
			_rootBoneRegistry.SubscribeOnValueChanged(OnRootBoneChanged);
		}

		private void OnDestroy()
		{
			_rootBoneRegistry.UnSubscribeOnValueChanged(OnRootBoneChanged);
			((JobHandle)(ref _prevJobHandle)).Complete();
			_pullTransformJobScheduler.Dispose();
			_pushTransformJobScheduler.Dispose();
			_updateSpringBoneJobScheduler.Dispose();
		}

		private void OnRootBoneChanged()
		{
			((JobHandle)(ref _prevJobHandle)).Complete();
		}

		private void LateUpdate()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: 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_0026: 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)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			((JobHandle)(ref _prevJobHandle)).Complete();
			JobHandle dependOn = _pullTransformJobScheduler.Schedule();
			dependOn = _updateSpringBoneJobScheduler.Schedule(dependOn);
			dependOn = _pushTransformJobScheduler.Schedule(dependOn);
			_prevJobHandle = dependOn;
		}
	}
	public sealed class FastSpringRootBone : IDisposable
	{
		private readonly TransformRegistry _transformRegistry;

		private readonly RootBoneRegistry _rootBoneRegistry;

		private readonly ColliderGroupRegistry _colliderGroupRegistry;

		private readonly Transform _transform;

		private float _radius;

		private NativeTransform _center;

		private IReadOnlyDictionary<Transform, int> _transformIndexMap;

		private NativeColliderGroups _nativeColliderGroups;

		private NativePoints _nativePoints;

		private NativePointer<BlittableRootBone> _rootBoneWrapper;

		private readonly IList<NativeTransform> _transformWrappers = new List<NativeTransform>();

		private readonly IList<NativePointer<BlittablePoint>> _points = new List<NativePointer<BlittablePoint>>();

		public IReadOnlyList<FastSpringBoneColliderGroup> ColliderGroups
		{
			get
			{
				return _nativeColliderGroups.ColliderGroups;
			}
			set
			{
				_nativeColliderGroups.ColliderGroups = value;
			}
		}

		public FastSpringRootBone(TransformRegistry transformRegistry, Transform transform, RootBoneRegistry rootBoneRegistry, ColliderGroupRegistry colliderGroupRegistry)
		{
			_transformRegistry = transformRegistry;
			_transform = transform;
			_rootBoneRegistry = rootBoneRegistry;
			_colliderGroupRegistry = colliderGroupRegistry;
		}

		public unsafe void Initialize(float gravityPower, Vector3 gravityDir, float dragForce, float stiffnessForce, IReadOnlyList<FastSpringBoneColliderGroup> colliderGroups, float radius, Transform center)
		{
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			_radius = radius;
			if ((Object)(object)center != (Object)null)
			{
				_center = new NativeTransform(_transformRegistry, TransformSynchronizationType.PullOnly, center);
			}
			_nativeColliderGroups = new NativeColliderGroups(colliderGroups);
			NativeTransform parent = null;
			if (Object.op_Implicit((Object)(object)_transform.parent))
			{
				parent = new NativeTransform(_transformRegistry, TransformSynchronizationType.PullOnly, _transform.parent);
			}
			SetupRecursive(_transform, parent);
			_nativePoints = new NativePoints(_points);
			_rootBoneWrapper = new NativePointer<BlittableRootBone>(new BlittableRootBone(gravityPower, gravityDir, dragForce, stiffnessForce, _nativePoints.GetUnsafePtr()));
			_rootBoneRegistry.Register(_rootBoneWrapper);
			_colliderGroupRegistry.Register(_nativeColliderGroups);
		}

		public void Dispose()
		{
			_colliderGroupRegistry.Unregister(_nativeColliderGroups);
			_rootBoneRegistry.Unregister(_rootBoneWrapper);
			foreach (NativeTransform transformWrapper in _transformWrappers)
			{
				transformWrapper.Dispose();
			}
			foreach (NativePointer<BlittablePoint> point in _points)
			{
				point.Dispose();
			}
			_center?.Dispose();
			_nativeColliderGroups?.Dispose();
			_nativePoints.Dispose();
			_rootBoneWrapper.Dispose();
		}

		private unsafe void SetupRecursive(Transform trs, NativeTransform parent = null)
		{
			NativeTransform nativeTransform = new NativeTransform(_transformRegistry, TransformSynchronizationType.PushOnly, trs, parent);
			_transformWrappers.Add(nativeTransform);
			NativePointer<BlittablePoint> item = new NativePointer<BlittablePoint>(new BlittablePoint(trs, _radius, (_center != null) ? _center.GetUnsafePtr() : null, _nativeColliderGroups.GetUnsafePtr(), nativeTransform.GetUnsafePtr()));
			_points.Add(item);
			for (int i = 0; i < trs.childCount; i++)
			{
				SetupRecursive(trs.GetChild(i), nativeTransform);
			}
		}
	}
}
namespace VRM.FastSpringBones.Blittables
{
	public readonly struct BlittableCollider
	{
		public Vector3 Offset { get; }

		public float Radius { get; }

		public BlittableCollider(Vector3 offset, float radius)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			Offset = offset;
			Radius = radius;
		}
	}
	public readonly struct BlittableColliderGroup
	{
		public BlittableColliders Colliders { get; }

		public unsafe BlittableTransform* Transform { get; }

		public unsafe BlittableColliderGroup(NativeArray<BlittableCollider> colliders, BlittableTransform* transform)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			Colliders = new BlittableColliders((BlittableCollider*)NativeArrayUnsafeUtility.GetUnsafePtr<BlittableCollider>(colliders), colliders.Length);
			Transform = transform;
		}
	}
	public readonly struct BlittableColliderGroups
	{
		private unsafe readonly BlittableColliderGroup* _data;

		public int Length { get; }

		public unsafe BlittableColliderGroup this[int i] => _data[i];

		public unsafe void DrawGizmos()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < Length; i++)
			{
				BlittableColliderGroup blittableColliderGroup = this[i];
				BlittableColliders colliders = blittableColliderGroup.Colliders;
				for (int j = 0; j < colliders.Count; j++)
				{
					Gizmos.DrawWireSphere(blittableColliderGroup.Transform->WorldPosition, colliders[j].Radius);
				}
			}
		}

		public unsafe BlittableColliderGroups(BlittableColliderGroup* data, int length)
		{
			_data = data;
			Length = length;
		}
	}
	public struct BlittableColliders
	{
		private unsafe readonly BlittableCollider* _colliders;

		public int Count { get; }

		public unsafe BlittableCollider this[int i] => _colliders[i];

		public unsafe BlittableColliders(BlittableCollider* colliders, int count)
		{
			_colliders = colliders;
			Count = count;
		}
	}
	public struct BlittablePoint
	{
		private readonly float _length;

		private readonly Quaternion _localRotation;

		private readonly Vector3 _boneAxis;

		private readonly float _radius;

		private Vector3 _prevPosition;

		private unsafe readonly BlittableColliderGroups* _blittableColliderGroups;

		private unsafe readonly BlittableTransform* _center;

		private unsafe readonly BlittableTransform* _transform;

		public Vector3 CurrentPosition { get; private set; }

		public unsafe BlittablePoint(Transform transform, float radius, BlittableTransform* center, BlittableColliderGroups* blittableColliderGroups, BlittableTransform* blittableTransform)
		{
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: 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_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: 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)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: 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_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: 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_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: 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_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			Matrix4x4 val3;
			Vector3 val4;
			if (transform.childCount == 0)
			{
				Vector3 val = transform.position - transform.parent.position;
				Vector3 val2 = transform.position + ((Vector3)(ref val)).normalized * 0.07f;
				val3 = transform.worldToLocalMatrix;
				val4 = ((Matrix4x4)(ref val3)).MultiplyPoint(val2);
			}
			else
			{
				Transform child = transform.GetChild(0);
				Vector3 lossyScale = child.lossyScale;
				val4 = child.localPosition;
				val4.x *= lossyScale.x;
				val4.y *= lossyScale.y;
				val4.z *= lossyScale.z;
			}
			Vector3 val5 = transform.TransformPoint(val4);
			Vector3 val6;
			if (center == null)
			{
				val6 = val5;
			}
			else
			{
				val3 = center->LocalToWorld;
				val3 = ((Matrix4x4)(ref val3)).inverse;
				val6 = ((Matrix4x4)(ref val3)).MultiplyPoint3x4(val5);
			}
			Vector3 prevPosition = val6;
			CurrentPosition = val6;
			_prevPosition = prevPosition;
			_localRotation = transform.localRotation;
			_boneAxis = ((Vector3)(ref val4)).normalized;
			_length = ((Vector3)(ref val4)).magnitude;
			_radius = radius;
			_blittableColliderGroups = blittableColliderGroups;
			_transform = blittableTransform;
			_center = center;
		}

		public unsafe void Update(float stiffnessForce, float dragForce, Vector3 external)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: 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_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: 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_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: 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: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: 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_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: 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_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: 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_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: 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_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			_transform->UpdateLocalToWorldMatrix();
			Vector3 val;
			Vector3 val2;
			if (_center == null)
			{
				val = CurrentPosition;
				val2 = _prevPosition;
			}
			else
			{
				Matrix4x4 localToWorld = _center->LocalToWorld;
				val = ((Matrix4x4)(ref localToWorld)).MultiplyPoint3x4(CurrentPosition);
				val2 = ((Matrix4x4)(ref localToWorld)).MultiplyPoint3x4(_prevPosition);
			}
			Vector3 val3 = val + (val - val2) * (1f - dragForce) + _transform->ParentWorldRotation * _localRotation * _boneAxis * stiffnessForce + external;
			Vector3 worldPosition = _transform->WorldPosition;
			Vector3 val4 = val3 - worldPosition;
			val3 = worldPosition + ((Vector3)(ref val4)).normalized * _length;
			val3 = Collision(val3, worldPosition);
			if (_center == null)
			{
				_prevPosition = val;
				CurrentPosition = val3;
			}
			else
			{
				Matrix4x4 localToWorld2 = _center->LocalToWorld;
				Matrix4x4 inverse = ((Matrix4x4)(ref localToWorld2)).inverse;
				_prevPosition = ((Matrix4x4)(ref inverse)).MultiplyPoint3x4(val);
				CurrentPosition = ((Matrix4x4)(ref inverse)).MultiplyPoint3x4(val3);
			}
			_transform->SetWorldRotation(ApplyRotation(val3));
		}

		private unsafe Vector3 Collision(Vector3 nextPosition, Vector3 position)
		{
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: 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_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: 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_007f: 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_0094: 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_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: 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)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < _blittableColliderGroups->Length; i++)
			{
				BlittableColliderGroup blittableColliderGroup = (*_blittableColliderGroups)[i];
				for (int j = 0; j < blittableColliderGroup.Colliders.Count; j++)
				{
					BlittableCollider blittableCollider = blittableColliderGroup.Colliders[j];
					Vector3 val = blittableColliderGroup.Transform->TransformPoint(blittableCollider.Offset);
					float num = _radius + blittableCollider.Radius;
					Vector3 val2 = nextPosition - val;
					if (((Vector3)(ref val2)).sqrMagnitude <= num * num)
					{
						val2 = nextPosition - val;
						Vector3 normalized = ((Vector3)(ref val2)).normalized;
						Vector3 val3 = val + normalized * (_radius + blittableCollider.Radius);
						val2 = val3 - position;
						nextPosition = position + ((Vector3)(ref val2)).normalized * _length;
					}
				}
			}
			return nextPosition;
		}

		private static Quaternion FromToRotation(Vector3 from, Vector3 to)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			float num = Mathf.Acos(Mathf.Clamp(Vector3.Dot(((Vector3)(ref from)).normalized, ((Vector3)(ref to)).normalized), -1f, 1f)) * 57.29578f;
			Vector3 val = Vector3.Cross(from, to);
			return Quaternion.AngleAxis(num, ((Vector3)(ref val)).normalized);
		}

		private unsafe Quaternion ApplyRotation(Vector3 nextTail)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: 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_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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)
			Quaternion val = _transform->ParentWorldRotation * _localRotation;
			return FromToRotation(val * _boneAxis, nextTail - _transform->WorldPosition) * val;
		}
	}
	public struct BlittablePoints
	{
		private unsafe readonly BlittablePoint* _points;

		public int Count { get; }

		public unsafe BlittablePoint this[int i]
		{
			get
			{
				return _points[i];
			}
			set
			{
				Unsafe.Write(_points + i, value);
			}
		}

		public unsafe BlittablePoints(BlittablePoint* points, int count)
		{
			_points = points;
			Count = count;
		}
	}
	public readonly struct BlittableRootBone
	{
		private readonly float _gravityPower;

		private readonly Vector3 _gravityDir;

		private readonly float _dragForce;

		private readonly float _stiffnessForce;

		private unsafe readonly BlittablePoints* _blittablePoints;

		public unsafe void DrawGizmos()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < _blittablePoints->Count; i++)
			{
				Gizmos.DrawWireSphere((*_blittablePoints)[i].CurrentPosition, 0.05f);
			}
			for (int j = 0; j < _blittablePoints->Count - 1; j++)
			{
				BlittablePoint blittablePoint = (*_blittablePoints)[j];
				BlittablePoint blittablePoint2 = (*_blittablePoints)[j + 1];
				Gizmos.DrawLine(blittablePoint.CurrentPosition, blittablePoint2.CurrentPosition);
			}
		}

		public unsafe BlittableRootBone(float gravityPower, Vector3 gravityDir, float dragForce, float stiffnessForce, BlittablePoints* blittablePoints)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			_gravityPower = gravityPower;
			_gravityDir = gravityDir;
			_dragForce = dragForce;
			_stiffnessForce = stiffnessForce;
			_blittablePoints = blittablePoints;
		}

		public unsafe void Update(float deltaTime)
		{
			//IL_000a: 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_0037: Unknown result type (might be due to invalid IL or missing references)
			float stiffnessForce = _stiffnessForce * deltaTime;
			Vector3 external = _gravityDir * (_gravityPower * deltaTime);
			for (int i = 0; i < _blittablePoints->Count; i++)
			{
				BlittablePoint value = (*_blittablePoints)[i];
				value.Update(stiffnessForce, _dragForce, external);
				(*_blittablePoints)[i] = value;
			}
		}
	}
	public struct BlittableTransform
	{
		private unsafe readonly BlittableTransform* _parent;

		private Quaternion _worldRotation;

		private Vector3 _localPosition;

		private Vector3 _localScale;

		private Quaternion _localRotation;

		private Matrix4x4 _localToWorld;

		public Vector3 WorldPosition { get; private set; }

		public Matrix4x4 LocalToWorld => _localToWorld;

		private Matrix4x4 LocalTransform => Matrix4x4.TRS(_localPosition, _localRotation, _localScale);

		public unsafe Quaternion ParentWorldRotation
		{
			get
			{
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_000a: Unknown result type (might be due to invalid IL or missing references)
				if (_parent == null)
				{
					return Quaternion.identity;
				}
				return _parent->_worldRotation;
			}
		}

		public void SetWorldRotation(Quaternion rotation)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: 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_0009: 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_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			Quaternion parentWorldRotation = ParentWorldRotation;
			_localRotation = Quaternion.Inverse(parentWorldRotation) * rotation;
			UpdateLocalToWorldMatrix();
		}

		public unsafe BlittableTransform(BlittableTransform* parent, Transform transform)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			_parent = parent;
			WorldPosition = transform.position;
			_worldRotation = transform.rotation;
			_localPosition = transform.localPosition;
			_localRotation = transform.localRotation;
			_localScale = transform.localScale;
			_localToWorld = transform.localToWorldMatrix;
		}

		public void PullFrom(TransformAccess transform)
		{
			//IL_0003: 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_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			WorldPosition = ((TransformAccess)(ref transform)).position;
			_worldRotation = ((TransformAccess)(ref transform)).rotation;
			_localPosition = ((TransformAccess)(ref transform)).localPosition;
			_localRotation = ((TransformAccess)(ref transform)).localRotation;
			_localScale = ((TransformAccess)(ref transform)).localScale;
			_localToWorld = ((TransformAccess)(ref transform)).localToWorldMatrix;
		}

		public void PushTo(TransformAccess transform)
		{
			//IL_0003: 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)
			((TransformAccess)(ref transform)).localPosition = _localPosition;
			((TransformAccess)(ref transform)).localRotation = _localRotation;
		}

		public Vector3 TransformPoint(Vector3 offset)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			return ((Matrix4x4)(ref _localToWorld)).MultiplyPoint3x4(offset);
		}

		public unsafe void UpdateLocalToWorldMatrix()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: 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_0029: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			_localToWorld = ((_parent == null) ? LocalTransform : (_parent->_localToWorld * LocalTransform));
			WorldPosition = ((Matrix4x4)(ref _localToWorld)).MultiplyPoint3x4(Vector3.zero);
			_worldRotation = ((Matrix4x4)(ref _localToWorld)).rotation;
		}
	}
}

valheim_Data/Managed/FastSpringBone10.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using UniVRM10.FastSpringBones.Blittables;
using Unity.Burst;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using UnityEngine;
using UnityEngine.Jobs;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[1312]
		{
			0, 0, 0, 1, 0, 0, 0, 68, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 92, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 115, 92, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 67, 111, 108, 108, 105,
			100, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 72, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			92, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			115, 92, 66, 108, 105, 116, 116, 97, 98, 108,
			101, 69, 120, 116, 101, 114, 110, 97, 108, 68,
			97, 116, 97, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 65, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			92, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			115, 92, 66, 108, 105, 116, 116, 97, 98, 108,
			101, 74, 111, 105, 110, 116, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 65, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 92, 66, 108, 105, 116, 116, 97,
			98, 108, 101, 115, 92, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 76, 111, 103, 105, 99, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 64,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 66, 108, 105,
			116, 116, 97, 98, 108, 101, 115, 92, 66, 108,
			105, 116, 116, 97, 98, 108, 101, 83, 112, 97,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 66, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 92, 66,
			108, 105, 116, 116, 97, 98, 108, 101, 115, 92,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 83,
			112, 114, 105, 110, 103, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 69, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 92, 66, 108, 105, 116, 116, 97, 98,
			108, 101, 115, 92, 66, 108, 105, 116, 116, 97,
			98, 108, 101, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 71, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 92,
			73, 110, 112, 117, 116, 80, 111, 114, 116, 115,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 66, 117, 102, 102, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 73, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 92, 73,
			110, 112, 117, 116, 80, 111, 114, 116, 115, 92,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 67, 111, 108, 108, 105, 100,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 70, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 92,
			73, 110, 112, 117, 116, 80, 111, 114, 116, 115,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 74, 111, 105, 110, 116,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			71, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 92, 73, 110,
			112, 117, 116, 80, 111, 114, 116, 115, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 83, 112, 114, 105, 110, 103, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 76,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 83, 121, 115,
			116, 101, 109, 92, 67, 111, 112, 121, 84, 111,
			78, 97, 116, 105, 118, 101, 65, 114, 114, 97,
			121, 84, 114, 97, 110, 115, 102, 111, 114, 109,
			74, 111, 98, 46, 99, 115, 0, 0, 0, 5,
			0, 0, 0, 75, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			92, 83, 121, 115, 116, 101, 109, 92, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 66, 117, 102, 102, 101, 114, 67, 111,
			109, 98, 105, 110, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 70, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 92, 83, 121, 115, 116, 101, 109,
			92, 70, 97, 115, 116, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 83, 99, 104, 101, 100,
			117, 108, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 68, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 83, 121, 115, 116, 101, 109, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 83, 101, 114, 118, 105, 99, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			63, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 92, 83, 121,
			115, 116, 101, 109, 92, 80, 117, 115, 104, 84,
			114, 97, 110, 115, 102, 111, 114, 109, 74, 111,
			98, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 70, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 92, 83,
			121, 115, 116, 101, 109, 92, 85, 112, 100, 97,
			116, 101, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 74, 111, 98, 46,
			99, 115
		};
		result.TypesData = new byte[1303]
		{
			0, 0, 0, 0, 53, 85, 110, 105, 86, 82,
			77, 49, 48, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 115,
			124, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			67, 111, 108, 108, 105, 100, 101, 114, 0, 0,
			0, 0, 57, 85, 110, 105, 86, 82, 77, 49,
			48, 46, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 115, 46, 66, 108,
			105, 116, 116, 97, 98, 108, 101, 115, 124, 66,
			108, 105, 116, 116, 97, 98, 108, 101, 69, 120,
			116, 101, 114, 110, 97, 108, 68, 97, 116, 97,
			0, 0, 0, 0, 50, 85, 110, 105, 86, 82,
			77, 49, 48, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 115,
			124, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			74, 111, 105, 110, 116, 0, 0, 0, 0, 50,
			85, 110, 105, 86, 82, 77, 49, 48, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 115, 124, 66, 108, 105, 116,
			116, 97, 98, 108, 101, 76, 111, 103, 105, 99,
			0, 0, 0, 0, 49, 85, 110, 105, 86, 82,
			77, 49, 48, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 115,
			124, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			83, 112, 97, 110, 0, 0, 0, 0, 51, 85,
			110, 105, 86, 82, 77, 49, 48, 46, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 115, 46, 66, 108, 105, 116, 116, 97,
			98, 108, 101, 115, 124, 66, 108, 105, 116, 116,
			97, 98, 108, 101, 83, 112, 114, 105, 110, 103,
			0, 0, 0, 0, 54, 85, 110, 105, 86, 82,
			77, 49, 48, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			66, 108, 105, 116, 116, 97, 98, 108, 101, 115,
			124, 66, 108, 105, 116, 116, 97, 98, 108, 101,
			84, 114, 97, 110, 115, 102, 111, 114, 109, 0,
			0, 0, 0, 52, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 83,
			121, 115, 116, 101, 109, 124, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			66, 117, 102, 102, 101, 114, 0, 0, 0, 0,
			54, 85, 110, 105, 86, 82, 77, 49, 48, 46,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 115, 46, 83, 121, 115, 116,
			101, 109, 124, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 67, 111, 108,
			108, 105, 100, 101, 114, 0, 0, 0, 0, 51,
			85, 110, 105, 86, 82, 77, 49, 48, 46, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 115, 46, 83, 121, 115, 116, 101,
			109, 124, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 74, 111, 105, 110,
			116, 0, 0, 0, 0, 52, 85, 110, 105, 86,
			82, 77, 49, 48, 46, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 115,
			46, 83, 121, 115, 116, 101, 109, 124, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 83, 112, 114, 105, 110, 103, 0, 0,
			0, 0, 48, 85, 110, 105, 86, 82, 77, 49,
			48, 46, 70, 97, 115, 116, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 115, 46, 83, 121,
			115, 116, 101, 109, 124, 80, 117, 108, 108, 84,
			114, 97, 110, 115, 102, 111, 114, 109, 74, 111,
			98, 0, 0, 0, 0, 60, 85, 110, 105, 86,
			82, 77, 49, 48, 46, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 115,
			46, 83, 121, 115, 116, 101, 109, 124, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 66, 117, 102, 102, 101, 114, 67, 111,
			109, 98, 105, 110, 101, 114, 0, 0, 0, 0,
			78, 85, 110, 105, 86, 82, 77, 49, 48, 46,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 115, 46, 83, 121, 115, 116,
			101, 109, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 66, 117, 102,
			102, 101, 114, 67, 111, 109, 98, 105, 110, 101,
			114, 124, 76, 111, 97, 100, 84, 114, 97, 110,
			115, 102, 111, 114, 109, 115, 74, 111, 98, 0,
			0, 0, 0, 75, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 83,
			121, 115, 116, 101, 109, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			66, 117, 102, 102, 101, 114, 67, 111, 109, 98,
			105, 110, 101, 114, 124, 76, 111, 97, 100, 83,
			112, 114, 105, 110, 103, 115, 74, 111, 98, 0,
			0, 0, 0, 77, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 115, 46, 83,
			121, 115, 116, 101, 109, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			66, 117, 102, 102, 101, 114, 67, 111, 109, 98,
			105, 110, 101, 114, 124, 76, 111, 97, 100, 67,
			111, 108, 108, 105, 100, 101, 114, 115, 74, 111,
			98, 0, 0, 0, 0, 76, 85, 110, 105, 86,
			82, 77, 49, 48, 46, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 115,
			46, 83, 121, 115, 116, 101, 109, 46, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 66, 117, 102, 102, 101, 114, 67, 111,
			109, 98, 105, 110, 101, 114, 124, 79, 102, 102,
			115, 101, 116, 76, 111, 103, 105, 99, 115, 74,
			111, 98, 0, 0, 0, 0, 55, 85, 110, 105,
			86, 82, 77, 49, 48, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			115, 46, 83, 121, 115, 116, 101, 109, 124, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 83, 99, 104, 101, 100, 117, 108,
			101, 114, 0, 0, 0, 0, 53, 85, 110, 105,
			86, 82, 77, 49, 48, 46, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			115, 46, 83, 121, 115, 116, 101, 109, 124, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 83, 101, 114, 118, 105, 99, 101,
			0, 0, 0, 0, 48, 85, 110, 105, 86, 82,
			77, 49, 48, 46, 70, 97, 115, 116, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 115, 46,
			83, 121, 115, 116, 101, 109, 124, 80, 117, 115,
			104, 84, 114, 97, 110, 115, 102, 111, 114, 109,
			74, 111, 98, 0, 0, 0, 0, 55, 85, 110,
			105, 86, 82, 77, 49, 48, 46, 70, 97, 115,
			116, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 115, 46, 83, 121, 115, 116, 101, 109, 124,
			85, 112, 100, 97, 116, 101, 70, 97, 115, 116,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			74, 111, 98
		};
		result.TotalFiles = 17;
		result.TotalTypes = 21;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniVRM10.FastSpringBones.System
{
	public class FastSpringBoneBuffer : IDisposable
	{
		private NativeArray<BlittableExternalData> _externalData;

		public NativeArray<BlittableSpring> Springs { get; }

		public NativeArray<BlittableJoint> Joints { get; }

		public NativeArray<BlittableCollider> Colliders { get; }

		public NativeArray<BlittableLogic> Logics { get; }

		public NativeArray<BlittableTransform> BlittableTransforms { get; }

		public Transform[] Transforms { get; }

		public bool IsDisposed { get; private set; }

		public BlittableExternalData ExternalData
		{
			get
			{
				return _externalData[0];
			}
			set
			{
				_externalData[0] = value;
			}
		}

		public unsafe FastSpringBoneBuffer(IReadOnlyList<FastSpringBoneSpring> springs, BlittableExternalData externalData, bool simulateLastBone = false)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0554: Unknown result type (might be due to invalid IL or missing references)
			//IL_0559: Unknown result type (might be due to invalid IL or missing references)
			//IL_0567: Unknown result type (might be due to invalid IL or missing references)
			//IL_056c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0579: Unknown result type (might be due to invalid IL or missing references)
			//IL_057e: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0591: 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_05a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_024d: 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_037c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0381: Unknown result type (might be due to invalid IL or missing references)
			//IL_03de: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e3: 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_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03be: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: 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_0408: 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_040d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0411: Unknown result type (might be due to invalid IL or missing references)
			//IL_0418: Unknown result type (might be due to invalid IL or missing references)
			//IL_0420: Unknown result type (might be due to invalid IL or missing references)
			//IL_0427: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0436: Unknown result type (might be due to invalid IL or missing references)
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0451: Unknown result type (might be due to invalid IL or missing references)
			//IL_046d: Unknown result type (might be due to invalid IL or missing references)
			//IL_046f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_0474: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: 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_04de: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f1: Unknown result type (might be due to invalid IL or missing references)
			_externalData = new NativeArray<BlittableExternalData>(1, (Allocator)4, (NativeArrayOptions)1);
			ExternalData = externalData;
			HashSet<Transform> hashSet = new HashSet<Transform>();
			foreach (FastSpringBoneSpring spring in springs)
			{
				FastSpringBoneJoint[] joints = spring.joints;
				for (int i = 0; i < joints.Length; i++)
				{
					FastSpringBoneJoint fastSpringBoneJoint = joints[i];
					hashSet.Add(fastSpringBoneJoint.Transform);
					if ((Object)(object)fastSpringBoneJoint.Transform.parent != (Object)null)
					{
						hashSet.Add(fastSpringBoneJoint.Transform.parent);
					}
				}
				FastSpringBoneCollider[] colliders = spring.colliders;
				for (int i = 0; i < colliders.Length; i++)
				{
					FastSpringBoneCollider fastSpringBoneCollider = colliders[i];
					hashSet.Add(fastSpringBoneCollider.Transform);
				}
				if ((Object)(object)spring.center != (Object)null)
				{
					hashSet.Add(spring.center);
				}
			}
			Transform[] array = hashSet.ToArray();
			Dictionary<Transform, int> transformIndexDictionary = array.Select((Transform trs, int index) => (trs, index)).ToDictionary<(Transform, int), Transform, int>(((Transform trs, int index) tuple) => tuple.trs, ((Transform trs, int index) tuple) => tuple.index);
			List<BlittableCollider> list = new List<BlittableCollider>();
			List<BlittableJoint> list2 = new List<BlittableJoint>();
			List<BlittableSpring> list3 = new List<BlittableSpring>();
			List<BlittableLogic> list4 = new List<BlittableLogic>();
			Vector3 val3 = default(Vector3);
			foreach (FastSpringBoneSpring spring2 in springs)
			{
				BlittableSpring item = new BlittableSpring
				{
					colliderSpan = new BlittableSpan
					{
						startIndex = list.Count,
						count = spring2.colliders.Length
					},
					logicSpan = new BlittableSpan
					{
						startIndex = list2.Count,
						count = (simulateLastBone ? spring2.joints.Length : (spring2.joints.Length - 1))
					},
					centerTransformIndex = (Object.op_Implicit((Object)(object)spring2.center) ? transformIndexDictionary[spring2.center] : (-1)),
					ExternalData = (BlittableExternalData*)NativeArrayUnsafeUtility.GetUnsafePtr<BlittableExternalData>(_externalData)
				};
				list3.Add(item);
				list.AddRange(spring2.colliders.Select(delegate(FastSpringBoneCollider collider)
				{
					BlittableCollider collider2 = collider.Collider;
					collider2.transformIndex = transformIndexDictionary[collider.Transform];
					return collider2;
				}));
				list2.AddRange(from joint in spring2.joints.Take(simulateLastBone ? spring2.joints.Length : (spring2.joints.Length - 1))
					select joint.Joint);
				for (int j = 0; j < (simulateLastBone ? spring2.joints.Length : (spring2.joints.Length - 1)); j++)
				{
					FastSpringBoneJoint fastSpringBoneJoint2 = spring2.joints[j];
					FastSpringBoneJoint? fastSpringBoneJoint3 = ((j + 1 < spring2.joints.Length) ? new FastSpringBoneJoint?(spring2.joints[j + 1]) : null);
					FastSpringBoneJoint? fastSpringBoneJoint4 = ((j - 1 >= 0) ? new FastSpringBoneJoint?(spring2.joints[j - 1]) : null);
					Vector3 zero = Vector3.zero;
					if (fastSpringBoneJoint3.HasValue)
					{
						zero = fastSpringBoneJoint3.Value.Transform.localPosition;
					}
					else if (fastSpringBoneJoint4.HasValue)
					{
						Vector3 val = fastSpringBoneJoint2.Transform.position - fastSpringBoneJoint4.Value.Transform.position;
						Matrix4x4 worldToLocalMatrix = fastSpringBoneJoint2.Transform.worldToLocalMatrix;
						zero = ((Matrix4x4)(ref worldToLocalMatrix)).MultiplyPoint(fastSpringBoneJoint2.Transform.position + val);
					}
					else
					{
						zero = Vector3.down;
					}
					Vector3 val2 = (fastSpringBoneJoint3.HasValue ? fastSpringBoneJoint3.Value.Transform.lossyScale : fastSpringBoneJoint2.Transform.lossyScale);
					((Vector3)(ref val3))..ctor(zero.x * val2.x, zero.y * val2.y, zero.z * val2.z);
					Vector3 val4 = fastSpringBoneJoint2.Transform.TransformPoint(val3);
					Vector3 val5 = (((Object)(object)spring2.center != (Object)null) ? spring2.center.InverseTransformPoint(val4) : val4);
					Transform parent = fastSpringBoneJoint2.Transform.parent;
					list4.Add(new BlittableLogic
					{
						headTransformIndex = transformIndexDictionary[fastSpringBoneJoint2.Transform],
						parentTransformIndex = (((Object)(object)parent != (Object)null) ? transformIndexDictionary[parent] : (-1)),
						currentTail = val5,
						prevTail = val5,
						localRotation = fastSpringBoneJoint2.DefaultLocalRotation,
						boneAxis = ((Vector3)(ref val3)).normalized,
						length = ((Vector3)(ref val3)).magnitude
					});
				}
			}
			Springs = new NativeArray<BlittableSpring>(list3.ToArray(), (Allocator)4);
			Joints = new NativeArray<BlittableJoint>(list2.ToArray(), (Allocator)4);
			Colliders = new NativeArray<BlittableCollider>(list.ToArray(), (Allocator)4);
			Logics = new NativeArray<BlittableLogic>(list4.ToArray(), (Allocator)4);
			BlittableTransforms = new NativeArray<BlittableTransform>(array.Length, (Allocator)4, (NativeArrayOptions)1);
			Transforms = array.ToArray();
		}

		public void Dispose()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: 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_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			if (!IsDisposed)
			{
				IsDisposed = true;
				Springs.Dispose();
				Joints.Dispose();
				BlittableTransforms.Dispose();
				Colliders.Dispose();
				Logics.Dispose();
				_externalData.Dispose();
			}
		}
	}
	[Serializable]
	public struct FastSpringBoneCollider
	{
		public Transform Transform;

		public BlittableCollider Collider;
	}
	[Serializable]
	public struct FastSpringBoneJoint
	{
		public Transform Transform;

		public BlittableJoint Joint;

		public Quaternion DefaultLocalRotation;
	}
	[Serializable]
	public struct FastSpringBoneSpring
	{
		public Transform center;

		public FastSpringBoneJoint[] joints;

		public FastSpringBoneCollider[] colliders;
	}
	[BurstCompile]
	public struct PullTransformJob : IJobParallelForTransform
	{
		[WriteOnly]
		public NativeArray<BlittableTransform> Transforms;

		public void Execute(int index, TransformAccess transform)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: 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)
			Transforms[index] = new BlittableTransform
			{
				position = ((TransformAccess)(ref transform)).position,
				rotation = ((TransformAccess)(ref transform)).rotation,
				localPosition = ((TransformAccess)(ref transform)).localPosition,
				localRotation = ((TransformAccess)(ref transform)).localRotation,
				localScale = ((TransformAccess)(ref transform)).localScale,
				localToWorldMatrix = ((TransformAccess)(ref transform)).localToWorldMatrix,
				worldToLocalMatrix = ((TransformAccess)(ref transform)).worldToLocalMatrix
			};
		}
	}
	public sealed class FastSpringBoneBufferCombiner : IDisposable
	{
		[BurstCompile]
		private struct LoadTransformsJob : IJobParallelFor
		{
			[ReadOnly]
			public NativeArray<BlittableTransform> SrcTransforms;

			[WriteOnly]
			public NativeSlice<BlittableTransform> DestTransforms;

			public void Execute(int index)
			{
				DestTransforms[index] = SrcTransforms[index];
			}
		}

		[BurstCompile]
		private struct LoadSpringsJob : IJobParallelFor
		{
			[ReadOnly]
			public NativeArray<BlittableSpring> SrcSprings;

			[WriteOnly]
			public NativeSlice<BlittableSpring> DestSprings;

			public int CollidersOffset;

			public int LogicsOffset;

			public int TransformOffset;

			public void Execute(int index)
			{
				BlittableSpring blittableSpring = SrcSprings[index];
				blittableSpring.colliderSpan.startIndex += CollidersOffset;
				blittableSpring.logicSpan.startIndex += LogicsOffset;
				blittableSpring.transformIndexOffset = TransformOffset;
				DestSprings[index] = blittableSpring;
			}
		}

		[BurstCompile]
		private struct LoadCollidersJob : IJobParallelFor
		{
			[ReadOnly]
			public NativeArray<BlittableCollider> SrcColliders;

			[WriteOnly]
			public NativeSlice<BlittableCollider> DestColliders;

			public void Execute(int index)
			{
				DestColliders[index] = SrcColliders[index];
			}
		}

		[BurstCompile]
		private struct OffsetLogicsJob : IJobParallelFor
		{
			[ReadOnly]
			public NativeSlice<BlittableLogic> SrcLogics;

			[ReadOnly]
			public NativeSlice<BlittableJoint> SrcJoints;

			[WriteOnly]
			public NativeSlice<BlittableLogic> DestLogics;

			[WriteOnly]
			public NativeSlice<BlittableJoint> DestJoints;

			public void Execute(int index)
			{
				DestLogics[index] = SrcLogics[index];
				DestJoints[index] = SrcJoints[index];
			}
		}

		private NativeArray<BlittableSpring> _springs;

		private NativeArray<BlittableTransform> _transforms;

		private NativeArray<BlittableCollider> _colliders;

		private NativeArray<BlittableJoint> _joints;

		private NativeArray<BlittableLogic> _logics;

		private TransformAccessArray _transformAccessArray;

		private readonly LinkedList<FastSpringBoneBuffer> _buffers = new LinkedList<FastSpringBoneBuffer>();

		private FastSpringBoneBuffer[] _batchedBuffers;

		private int[] _batchedBufferLogicSizes;

		private bool _isDirty;

		public NativeArray<BlittableSpring> Springs => _springs;

		public NativeArray<BlittableJoint> Joints => _joints;

		public NativeArray<BlittableTransform> Transforms => _transforms;

		public TransformAccessArray TransformAccessArray => _transformAccessArray;

		public NativeArray<BlittableCollider> Colliders => _colliders;

		public NativeArray<BlittableLogic> Logics => _logics;

		public bool HasBuffer
		{
			get
			{
				if (_batchedBuffers != null)
				{
					return _batchedBuffers.Length != 0;
				}
				return false;
			}
		}

		public void Register(FastSpringBoneBuffer buffer)
		{
			_buffers.AddLast(buffer);
			_isDirty = true;
		}

		public void Unregister(FastSpringBoneBuffer buffer)
		{
			_buffers.Remove(buffer);
			_isDirty = true;
		}

		public JobHandle ReconstructIfDirty(JobHandle handle)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			if (_isDirty)
			{
				JobHandle result = ReconstructBuffers(handle);
				_isDirty = false;
				return result;
			}
			return handle;
		}

		private void SaveToSourceBuffer()
		{
			//IL_002c: 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)
			if (_batchedBuffers == null)
			{
				return;
			}
			int num = 0;
			for (int i = 0; i < _batchedBuffers.Length; i++)
			{
				int num2 = _batchedBufferLogicSizes[i];
				if (!_batchedBuffers[i].IsDisposed && num2 > 0)
				{
					NativeArray<BlittableLogic>.Copy(_logics, num, _batchedBuffers[i].Logics, 0, num2);
				}
				num += num2;
			}
		}

		private JobHandle ReconstructBuffers(JobHandle handle)
		{
			//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_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: 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_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: 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_00ee: 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_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: 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_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: 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_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: 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_020d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: 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_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: 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_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_024f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: 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_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: 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_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: 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_02df: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: 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_032a: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_0397: 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)
			SaveToSourceBuffer();
			DisposeAllBuffers();
			int num = 0;
			int num2 = 0;
			int num3 = 0;
			int num4 = 0;
			_batchedBuffers = _buffers.ToArray();
			_batchedBufferLogicSizes = _batchedBuffers.Select((FastSpringBoneBuffer buffer) => buffer.Logics.Length).ToArray();
			foreach (FastSpringBoneBuffer buffer in _buffers)
			{
				num += buffer.Springs.Length;
				num2 += buffer.Colliders.Length;
				num3 += buffer.Logics.Length;
				num4 += buffer.BlittableTransforms.Length;
			}
			_springs = new NativeArray<BlittableSpring>(num, (Allocator)4, (NativeArrayOptions)1);
			_joints = new NativeArray<BlittableJoint>(num3, (Allocator)4, (NativeArrayOptions)1);
			_logics = new NativeArray<BlittableLogic>(num3, (Allocator)4, (NativeArrayOptions)1);
			_colliders = new NativeArray<BlittableCollider>(num2, (Allocator)4, (NativeArrayOptions)1);
			_transforms = new NativeArray<BlittableTransform>(num4, (Allocator)4, (NativeArrayOptions)1);
			int num5 = 0;
			int num6 = 0;
			int num7 = 0;
			int num8 = 0;
			for (int i = 0; i < _batchedBuffers.Length; i++)
			{
				FastSpringBoneBuffer fastSpringBoneBuffer = _batchedBuffers[i];
				LoadTransformsJob loadTransformsJob = default(LoadTransformsJob);
				loadTransformsJob.SrcTransforms = fastSpringBoneBuffer.BlittableTransforms;
				loadTransformsJob.DestTransforms = new NativeSlice<BlittableTransform>(_transforms, num8, fastSpringBoneBuffer.BlittableTransforms.Length);
				handle = IJobParallelForExtensions.Schedule<LoadTransformsJob>(loadTransformsJob, fastSpringBoneBuffer.BlittableTransforms.Length, 1, handle);
				LoadSpringsJob loadSpringsJob = default(LoadSpringsJob);
				loadSpringsJob.SrcSprings = fastSpringBoneBuffer.Springs;
				loadSpringsJob.DestSprings = new NativeSlice<BlittableSpring>(_springs, num5, fastSpringBoneBuffer.Springs.Length);
				loadSpringsJob.CollidersOffset = num6;
				loadSpringsJob.LogicsOffset = num7;
				loadSpringsJob.TransformOffset = num8;
				handle = IJobParallelForExtensions.Schedule<LoadSpringsJob>(loadSpringsJob, fastSpringBoneBuffer.Springs.Length, 1, handle);
				LoadCollidersJob loadCollidersJob = default(LoadCollidersJob);
				loadCollidersJob.SrcColliders = fastSpringBoneBuffer.Colliders;
				loadCollidersJob.DestColliders = new NativeSlice<BlittableCollider>(_colliders, num6, fastSpringBoneBuffer.Colliders.Length);
				handle = IJobParallelForExtensions.Schedule<LoadCollidersJob>(loadCollidersJob, fastSpringBoneBuffer.Colliders.Length, 1, handle);
				OffsetLogicsJob offsetLogicsJob = default(OffsetLogicsJob);
				offsetLogicsJob.SrcLogics = NativeSlice<BlittableLogic>.op_Implicit(fastSpringBoneBuffer.Logics);
				offsetLogicsJob.SrcJoints = NativeSlice<BlittableJoint>.op_Implicit(fastSpringBoneBuffer.Joints);
				offsetLogicsJob.DestLogics = new NativeSlice<BlittableLogic>(_logics, num7, fastSpringBoneBuffer.Logics.Length);
				offsetLogicsJob.DestJoints = new NativeSlice<BlittableJoint>(_joints, num7, fastSpringBoneBuffer.Logics.Length);
				handle = IJobParallelForExtensions.Schedule<OffsetLogicsJob>(offsetLogicsJob, fastSpringBoneBuffer.Logics.Length, 1, handle);
				num5 += fastSpringBoneBuffer.Springs.Length;
				num6 += fastSpringBoneBuffer.Colliders.Length;
				num7 += fastSpringBoneBuffer.Logics.Length;
				num8 += fastSpringBoneBuffer.BlittableTransforms.Length;
			}
			JobHandle.ScheduleBatchedJobs();
			Transform[] array = (Transform[])(object)new Transform[num4];
			int num9 = 0;
			FastSpringBoneBuffer[] batchedBuffers = _batchedBuffers;
			foreach (FastSpringBoneBuffer fastSpringBoneBuffer2 in batchedBuffers)
			{
				Array.Copy(fastSpringBoneBuffer2.Transforms, 0, array, num9, fastSpringBoneBuffer2.Transforms.Length);
				num9 += fastSpringBoneBuffer2.BlittableTransforms.Length;
			}
			_transformAccessArray = new TransformAccessArray(array, -1);
			return handle;
		}

		private void DisposeAllBuffers()
		{
			if (_springs.IsCreated)
			{
				_springs.Dispose();
			}
			if (_joints.IsCreated)
			{
				_joints.Dispose();
			}
			if (_transforms.IsCreated)
			{
				_transforms.Dispose();
			}
			if (((TransformAccessArray)(ref _transformAccessArray)).isCreated)
			{
				((TransformAccessArray)(ref _transformAccessArray)).Dispose();
			}
			if (_colliders.IsCreated)
			{
				_colliders.Dispose();
			}
			if (_logics.IsCreated)
			{
				_logics.Dispose();
			}
		}

		public void Dispose()
		{
			DisposeAllBuffers();
		}
	}
	public sealed class FastSpringBoneScheduler : IDisposable
	{
		private readonly FastSpringBoneBufferCombiner _bufferCombiner;

		public FastSpringBoneScheduler(FastSpringBoneBufferCombiner bufferCombiner)
		{
			_bufferCombiner = bufferCombiner;
		}

		public JobHandle Schedule(float deltaTime)
		{
			//IL_0002: 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_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_0085: 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_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: 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_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_00d0: 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_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: 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_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			JobHandle val = _bufferCombiner.ReconstructIfDirty(default(JobHandle));
			if (!_bufferCombiner.HasBuffer)
			{
				return val;
			}
			PullTransformJob pullTransformJob = default(PullTransformJob);
			pullTransformJob.Transforms = _bufferCombiner.Transforms;
			val = IJobParallelForTransformExtensions.Schedule<PullTransformJob>(pullTransformJob, _bufferCombiner.TransformAccessArray, val);
			UpdateFastSpringBoneJob updateFastSpringBoneJob = default(UpdateFastSpringBoneJob);
			updateFastSpringBoneJob.Colliders = _bufferCombiner.Colliders;
			updateFastSpringBoneJob.Joints = _bufferCombiner.Joints;
			updateFastSpringBoneJob.Logics = _bufferCombiner.Logics;
			updateFastSpringBoneJob.Springs = _bufferCombiner.Springs;
			updateFastSpringBoneJob.Transforms = _bufferCombiner.Transforms;
			updateFastSpringBoneJob.DeltaTime = deltaTime;
			val = IJobParallelForExtensions.Schedule<UpdateFastSpringBoneJob>(updateFastSpringBoneJob, _bufferCombiner.Springs.Length, 1, val);
			PushTransformJob pushTransformJob = default(PushTransformJob);
			pushTransformJob.Transforms = _bufferCombiner.Transforms;
			return IJobParallelForTransformExtensions.Schedule<PushTransformJob>(pushTransformJob, _bufferCombiner.TransformAccessArray, val);
		}

		public void Dispose()
		{
			_bufferCombiner.Dispose();
		}
	}
	[DefaultExecutionOrder(11010)]
	public sealed class FastSpringBoneService : MonoBehaviour
	{
		public enum UpdateTypes
		{
			Manual,
			LateUpdate
		}

		[SerializeField]
		[Header("Runtime")]
		public UpdateTypes UpdateType = UpdateTypes.LateUpdate;

		private FastSpringBoneScheduler _fastSpringBoneScheduler;

		private static FastSpringBoneService _instance;

		public FastSpringBoneBufferCombiner BufferCombiner { get; private set; }

		public static FastSpringBoneService Instance
		{
			get
			{
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				//IL_003e: Expected O, but got Unknown
				if (Object.op_Implicit((Object)(object)_instance))
				{
					return _instance;
				}
				_instance = Object.FindObjectOfType<FastSpringBoneService>();
				if (Object.op_Implicit((Object)(object)_instance))
				{
					return _instance;
				}
				GameObject val = new GameObject("FastSpringBone Service");
				Object.DontDestroyOnLoad((Object)val);
				_instance = val.AddComponent<FastSpringBoneService>();
				return _instance;
			}
		}

		public static void Free()
		{
			Object.Destroy((Object)(object)((Component)_instance).gameObject);
			_instance = null;
		}

		private void OnEnable()
		{
			BufferCombiner = new FastSpringBoneBufferCombiner();
			_fastSpringBoneScheduler = new FastSpringBoneScheduler(BufferCombiner);
		}

		private void OnDisable()
		{
			BufferCombiner.Dispose();
			_fastSpringBoneScheduler.Dispose();
		}

		private void LateUpdate()
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			if (UpdateType == UpdateTypes.LateUpdate)
			{
				JobHandle val = _fastSpringBoneScheduler.Schedule(Time.deltaTime);
				((JobHandle)(ref val)).Complete();
			}
		}

		public void ManualUpdate(float deltaTime)
		{
			//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)
			if (UpdateType != 0)
			{
				throw new ArgumentException("require UpdateTypes.Manual");
			}
			JobHandle val = _fastSpringBoneScheduler.Schedule(deltaTime);
			((JobHandle)(ref val)).Complete();
		}
	}
	[BurstCompile]
	public struct PushTransformJob : IJobParallelForTransform
	{
		[ReadOnly]
		public NativeArray<BlittableTransform> Transforms;

		public void Execute(int index, TransformAccess transform)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			((TransformAccess)(ref transform)).rotation = Transforms[index].rotation;
		}
	}
	[BurstCompile]
	public struct UpdateFastSpringBoneJob : IJobParallelFor
	{
		[ReadOnly]
		public NativeArray<BlittableSpring> Springs;

		[ReadOnly]
		public NativeArray<BlittableJoint> Joints;

		[ReadOnly]
		public NativeArray<BlittableCollider> Colliders;

		[NativeDisableParallelForRestriction]
		public NativeArray<BlittableLogic> Logics;

		[NativeDisableParallelForRestriction]
		public NativeArray<BlittableTransform> Transforms;

		public float DeltaTime;

		public unsafe void Execute(int index)
		{
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: 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_0109: Unknown result type (might be due to invalid IL or missing references)
			//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_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: 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_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: 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_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: 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_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: 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)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f3: 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_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_021b: 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_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0247: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: 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_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: 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_0361: Unknown result type (might be due to invalid IL or missing references)
			//IL_034b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0376: Unknown result type (might be due to invalid IL or missing references)
			//IL_0391: Unknown result type (might be due to invalid IL or missing references)
			//IL_0396: 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_03a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b6: 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_03c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0456: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0464: Unknown result type (might be due to invalid IL or missing references)
			//IL_0469: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_047c: 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_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048f: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ea: 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_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0406: Unknown result type (might be due to invalid IL or missing references)
			//IL_040b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Unknown result type (might be due to invalid IL or missing references)
			//IL_0417: Unknown result type (might be due to invalid IL or missing references)
			//IL_041b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0422: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_0446: Unknown result type (might be due to invalid IL or missing references)
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			BlittableSpring blittableSpring = Springs[index];
			int transformIndexOffset = blittableSpring.transformIndexOffset;
			BlittableSpan colliderSpan = blittableSpring.colliderSpan;
			BlittableSpan logicSpan = blittableSpring.logicSpan;
			for (int i = logicSpan.startIndex; i < logicSpan.startIndex + logicSpan.count; i++)
			{
				BlittableLogic blittableLogic = Logics[i];
				BlittableJoint joint = Joints[i];
				BlittableTransform blittableTransform = Transforms[blittableLogic.headTransformIndex + transformIndexOffset];
				BlittableTransform? blittableTransform2 = ((blittableLogic.parentTransformIndex >= 0) ? new BlittableTransform?(Transforms[blittableLogic.parentTransformIndex + transformIndexOffset]) : null);
				BlittableTransform? blittableTransform3 = ((blittableSpring.centerTransformIndex >= 0) ? new BlittableTransform?(Transforms[blittableSpring.centerTransformIndex + transformIndexOffset]) : null);
				BlittableTransform value;
				if (blittableTransform2.HasValue)
				{
					value = blittableTransform2.Value;
					blittableTransform.position = ((Matrix4x4)(ref value.localToWorldMatrix)).MultiplyPoint3x4(blittableTransform.localPosition);
					blittableTransform.rotation = blittableTransform2.Value.rotation * blittableTransform.localRotation;
				}
				Vector3 val;
				if (!blittableTransform3.HasValue)
				{
					val = blittableLogic.currentTail;
				}
				else
				{
					value = blittableTransform3.Value;
					val = ((Matrix4x4)(ref value.localToWorldMatrix)).MultiplyPoint3x4(blittableLogic.currentTail);
				}
				Vector3 val2 = val;
				Vector3 val3;
				if (!blittableTransform3.HasValue)
				{
					val3 = blittableLogic.prevTail;
				}
				else
				{
					value = blittableTransform3.Value;
					val3 = ((Matrix4x4)(ref value.localToWorldMatrix)).MultiplyPoint3x4(blittableLogic.prevTail);
				}
				Vector3 val4 = val3;
				Quaternion val5 = blittableTransform2?.rotation ?? Quaternion.identity;
				Vector3 val6 = (joint.gravityDir * joint.gravityPower + blittableSpring.ExternalData->ExternalForce) * DeltaTime;
				Vector3 val7 = val2 + (val2 - val4) * (1f - joint.dragForce) + val5 * blittableLogic.localRotation * blittableLogic.boneAxis * joint.stiffnessForce * DeltaTime + val6;
				Vector3 position = blittableTransform.position;
				Vector3 val8 = val7 - blittableTransform.position;
				val7 = position + ((Vector3)(ref val8)).normalized * blittableLogic.length;
				for (int j = colliderSpan.startIndex; j < colliderSpan.startIndex + colliderSpan.count; j++)
				{
					BlittableCollider collider = Colliders[j];
					BlittableTransform blittableTransform4 = Transforms[collider.transformIndex + transformIndexOffset];
					Vector3 lossyScale = ((Matrix4x4)(ref blittableTransform4.localToWorldMatrix)).lossyScale;
					float maxColliderScale = Mathf.Max(Mathf.Max(Mathf.Abs(lossyScale.x), Mathf.Abs(lossyScale.y)), Mathf.Abs(lossyScale.z));
					Vector3 worldPosition = ((Matrix4x4)(ref blittableTransform4.localToWorldMatrix)).MultiplyPoint3x4(collider.offset);
					Vector3 worldTail = ((Matrix4x4)(ref blittableTransform4.localToWorldMatrix)).MultiplyPoint3x4(collider.tail);
					switch (collider.colliderType)
					{
					case BlittableColliderType.Sphere:
						ResolveSphereCollision(joint, collider, worldPosition, blittableTransform, maxColliderScale, blittableLogic, ref val7);
						break;
					case BlittableColliderType.Capsule:
						ResolveCapsuleCollision(worldTail, worldPosition, blittableTransform, joint, collider, maxColliderScale, blittableLogic, ref val7);
						break;
					}
				}
				Vector3 prevTail;
				if (!blittableTransform3.HasValue)
				{
					prevTail = val2;
				}
				else
				{
					value = blittableTransform3.Value;
					prevTail = ((Matrix4x4)(ref value.worldToLocalMatrix)).MultiplyPoint3x4(val2);
				}
				blittableLogic.prevTail = prevTail;
				Vector3 currentTail;
				if (!blittableTransform3.HasValue)
				{
					currentTail = val7;
				}
				else
				{
					value = blittableTransform3.Value;
					currentTail = ((Matrix4x4)(ref value.worldToLocalMatrix)).MultiplyPoint3x4(val7);
				}
				blittableLogic.currentTail = currentTail;
				Quaternion val9 = val5 * blittableLogic.localRotation;
				blittableTransform.rotation = Quaternion.FromToRotation(val9 * blittableLogic.boneAxis, val7 - blittableTransform.position) * val9;
				if (blittableTransform2.HasValue)
				{
					Matrix4x4 localToWorldMatrix = blittableTransform2.Value.localToWorldMatrix;
					blittableTransform.localRotation = Normalize(Quaternion.Inverse(blittableTransform2.Value.rotation) * blittableTransform.rotation);
					blittableTransform.localToWorldMatrix = localToWorldMatrix * Matrix4x4.TRS(blittableTransform.localPosition, blittableTransform.localRotation, blittableTransform.localScale);
					blittableTransform.worldToLocalMatrix = ((Matrix4x4)(ref blittableTransform.localToWorldMatrix)).inverse;
				}
				else
				{
					blittableTransform.localToWorldMatrix = Matrix4x4.TRS(blittableTransform.position, blittableTransform.rotation, blittableTransform.localScale);
					blittableTransform.worldToLocalMatrix = ((Matrix4x4)(ref blittableTransform.localToWorldMatrix)).inverse;
					blittableTransform.localRotation = blittableTransform.rotation;
				}
				Transforms[blittableLogic.headTransformIndex + transformIndexOffset] = blittableTransform;
				Logics[i] = blittableLogic;
			}
		}

		private static Quaternion Normalize(Quaternion q)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: 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_001f: 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)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			float num = (float)Math.Sqrt(Quaternion.Dot(q, q));
			if (!(num < float.Epsilon))
			{
				return new Quaternion(q.x / num, q.y / num, q.z / num, q.w / num);
			}
			return Quaternion.identity;
		}

		private static void ResolveCapsuleCollision(Vector3 worldTail, Vector3 worldPosition, BlittableTransform headTransform, BlittableJoint joint, BlittableCollider collider, float maxColliderScale, BlittableLogic logic, ref Vector3 nextTail)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: 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_0010: Unknown result type (might be due to invalid IL or missing references)
			//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_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: 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_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: 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_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = worldTail - worldPosition;
			Vector3 normalized = ((Vector3)(ref val)).normalized;
			Vector3 val2 = headTransform.position - worldPosition;
			float num = Vector3.Dot(normalized, val2);
			if (num <= 0f)
			{
				ResolveSphereCollision(joint, collider, worldPosition, headTransform, maxColliderScale, logic, ref nextTail);
			}
			float num2 = num / ((Vector3)(ref normalized)).magnitude;
			if (num2 >= 1f)
			{
				ResolveSphereCollision(joint, collider, worldTail, headTransform, maxColliderScale, logic, ref nextTail);
			}
			Vector3 worldPosition2 = worldPosition + normalized * num2;
			ResolveSphereCollision(joint, collider, worldPosition2, headTransform, maxColliderScale, logic, ref nextTail);
		}

		private static void ResolveSphereCollision(BlittableJoint joint, BlittableCollider collider, Vector3 worldPosition, BlittableTransform headTransform, float maxColliderScale, BlittableLogic logic, ref Vector3 nextTail)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: 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_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: 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_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			float num = joint.radius + collider.radius * maxColliderScale;
			if (Vector3.SqrMagnitude(nextTail - worldPosition) <= num * num)
			{
				Vector3 val = nextTail - worldPosition;
				Vector3 normalized = ((Vector3)(ref val)).normalized;
				Vector3 val2 = worldPosition + normalized * num;
				Vector3 position = headTransform.position;
				val = val2 - headTransform.position;
				nextTail = position + ((Vector3)(ref val)).normalized * logic.length;
			}
		}
	}
}
namespace UniVRM10.FastSpringBones.Blittables
{
	[Serializable]
	public struct BlittableCollider
	{
		public BlittableColliderType colliderType;

		public Vector3 offset;

		public float radius;

		public Vector3 tail;

		public int transformIndex;
	}
	public enum BlittableColliderType
	{
		Sphere,
		Capsule
	}
	public struct BlittableExternalData
	{
		public Vector3 ExternalForce;
	}
	[Serializable]
	public struct BlittableJoint
	{
		public float stiffnessForce;

		public float gravityPower;

		public Vector3 gravityDir;

		public float dragForce;

		public float radius;
	}
	[Serializable]
	public struct BlittableLogic
	{
		public int parentTransformIndex;

		public int headTransformIndex;

		public float length;

		public Vector3 currentTail;

		public Vector3 prevTail;

		public Quaternion localRotation;

		public Vector3 boneAxis;
	}
	[Serializable]
	public struct BlittableSpan
	{
		public int startIndex;

		public int count;
	}
	[Serializable]
	public struct BlittableSpring
	{
		public BlittableSpan colliderSpan;

		public BlittableSpan logicSpan;

		public int centerTransformIndex;

		public int transformIndexOffset;

		public unsafe BlittableExternalData* ExternalData;
	}
	[Serializable]
	public struct BlittableTransform
	{
		public Vector3 position;

		public Quaternion rotation;

		public Vector3 localPosition;

		public Quaternion localRotation;

		public Vector3 localScale;

		public Matrix4x4 localToWorldMatrix;

		public Matrix4x4 worldToLocalMatrix;
	}
}

valheim_Data/Managed/MToon.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[383]
		{
			0, 0, 0, 1, 0, 0, 0, 51, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 86, 82, 77,
			92, 77, 84, 111, 111, 110, 92, 77, 84, 111,
			111, 110, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 69, 110, 117, 109, 115, 46, 99, 115, 0,
			0, 0, 13, 0, 0, 0, 61, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 92, 86, 82, 77, 92,
			77, 84, 111, 111, 110, 92, 77, 84, 111, 111,
			110, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			77, 84, 111, 111, 110, 68, 101, 102, 105, 110,
			105, 116, 105, 111, 110, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 51, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 86, 82, 77, 92, 77,
			84, 111, 111, 110, 92, 77, 84, 111, 111, 110,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 85,
			116, 105, 108, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 57, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 92, 86, 82, 77, 92, 77, 84,
			111, 111, 110, 92, 77, 84, 111, 111, 110, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 85, 116,
			105, 108, 115, 71, 101, 116, 116, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 57,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 92, 86,
			82, 77, 92, 77, 84, 111, 111, 110, 92, 77,
			84, 111, 111, 110, 92, 83, 99, 114, 105, 112,
			116, 115, 92, 85, 116, 105, 108, 115, 83, 101,
			116, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 58, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 92, 86, 82, 77, 92, 77, 84,
			111, 111, 110, 92, 77, 84, 111, 111, 110, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 85, 116,
			105, 108, 115, 86, 101, 114, 115, 105, 111, 110,
			46, 99, 115
		};
		result.TypesData = new byte[480]
		{
			0, 0, 0, 0, 28, 77, 84, 111, 111, 110,
			124, 82, 101, 110, 100, 101, 114, 81, 117, 101,
			117, 101, 82, 101, 113, 117, 105, 114, 101, 109,
			101, 110, 116, 0, 0, 0, 0, 21, 77, 84,
			111, 111, 110, 124, 77, 84, 111, 111, 110, 68,
			101, 102, 105, 110, 105, 116, 105, 111, 110, 0,
			0, 0, 0, 20, 77, 84, 111, 111, 110, 124,
			77, 101, 116, 97, 68, 101, 102, 105, 110, 105,
			116, 105, 111, 110, 0, 0, 0, 0, 25, 77,
			84, 111, 111, 110, 124, 82, 101, 110, 100, 101,
			114, 105, 110, 103, 68, 101, 102, 105, 110, 105,
			116, 105, 111, 110, 0, 0, 0, 0, 21, 77,
			84, 111, 111, 110, 124, 67, 111, 108, 111, 114,
			68, 101, 102, 105, 110, 105, 116, 105, 111, 110,
			0, 0, 0, 0, 24, 77, 84, 111, 111, 110,
			124, 76, 105, 103, 104, 116, 105, 110, 103, 68,
			101, 102, 105, 110, 105, 116, 105, 111, 110, 0,
			0, 0, 0, 33, 77, 84, 111, 111, 110, 124,
			76, 105, 116, 65, 110, 100, 83, 104, 97, 100,
			101, 77, 105, 120, 105, 110, 103, 68, 101, 102,
			105, 110, 105, 116, 105, 111, 110, 0, 0, 0,
			0, 33, 77, 84, 111, 111, 110, 124, 76, 105,
			103, 104, 116, 105, 110, 103, 73, 110, 102, 108,
			117, 101, 110, 99, 101, 68, 101, 102, 105, 110,
			105, 116, 105, 111, 110, 0, 0, 0, 0, 24,
			77, 84, 111, 111, 110, 124, 69, 109, 105, 115,
			115, 105, 111, 110, 68, 101, 102, 105, 110, 105,
			116, 105, 111, 110, 0, 0, 0, 0, 22, 77,
			84, 111, 111, 110, 124, 77, 97, 116, 67, 97,
			112, 68, 101, 102, 105, 110, 105, 116, 105, 111,
			110, 0, 0, 0, 0, 19, 77, 84, 111, 111,
			110, 124, 82, 105, 109, 68, 101, 102, 105, 110,
			105, 116, 105, 111, 110, 0, 0, 0, 0, 22,
			77, 84, 111, 111, 110, 124, 78, 111, 114, 109,
			97, 108, 68, 101, 102, 105, 110, 105, 116, 105,
			111, 110, 0, 0, 0, 0, 23, 77, 84, 111,
			111, 110, 124, 79, 117, 116, 108, 105, 110, 101,
			68, 101, 102, 105, 110, 105, 116, 105, 111, 110,
			0, 0, 0, 0, 31, 77, 84, 111, 111, 110,
			124, 84, 101, 120, 116, 117, 114, 101, 85, 118,
			67, 111, 111, 114, 100, 115, 68, 101, 102, 105,
			110, 105, 116, 105, 111, 110, 1, 0, 0, 0,
			11, 77, 84, 111, 111, 110, 124, 85, 116, 105,
			108, 115, 1, 0, 0, 0, 11, 77, 84, 111,
			111, 110, 124, 85, 116, 105, 108, 115, 1, 0,
			0, 0, 11, 77, 84, 111, 111, 110, 124, 85,
			116, 105, 108, 115, 1, 0, 0, 0, 11, 77,
			84, 111, 111, 110, 124, 85, 116, 105, 108, 115
		};
		result.TotalFiles = 6;
		result.TotalTypes = 18;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace MToon;

public enum DebugMode
{
	None,
	Normal,
	LitShadeRate
}
public enum OutlineColorMode
{
	FixedColor,
	MixedLighting
}
public enum OutlineWidthMode
{
	None,
	WorldCoordinates,
	ScreenCoordinates
}
public enum RenderMode
{
	Opaque,
	Cutout,
	Transparent,
	TransparentWithZWrite
}
public enum CullMode
{
	Off,
	Front,
	Back
}
public struct RenderQueueRequirement
{
	public int DefaultValue;

	public int MinValue;

	public int MaxValue;
}
public class MToonDefinition
{
	public MetaDefinition Meta;

	public RenderingDefinition Rendering;

	public ColorDefinition Color;

	public LightingDefinition Lighting;

	public EmissionDefinition Emission;

	public MatCapDefinition MatCap;

	public RimDefinition Rim;

	public OutlineDefinition Outline;

	public TextureUvCoordsDefinition TextureOption;
}
public class MetaDefinition
{
	public string Implementation;

	public int VersionNumber;
}
public class RenderingDefinition
{
	public RenderMode RenderMode;

	public CullMode CullMode;

	public int RenderQueueOffsetNumber;
}
public class ColorDefinition
{
	public Color LitColor;

	public Texture2D LitMultiplyTexture;

	public Color ShadeColor;

	public Texture2D ShadeMultiplyTexture;

	public float CutoutThresholdValue;
}
public class LightingDefinition
{
	public LitAndShadeMixingDefinition LitAndShadeMixing;

	public LightingInfluenceDefinition LightingInfluence;

	public NormalDefinition Normal;
}
public class LitAndShadeMixingDefinition
{
	public float ShadingShiftValue;

	public float ShadingToonyValue;

	public float ShadowReceiveMultiplierValue;

	public Texture2D ShadowReceiveMultiplierMultiplyTexture;

	public float LitAndShadeMixingMultiplierValue;

	public Texture2D LitAndShadeMixingMultiplierMultiplyTexture;
}
public class LightingInfluenceDefinition
{
	public float LightColorAttenuationValue;

	public float GiIntensityValue;
}
public class EmissionDefinition
{
	public Color EmissionColor;

	public Texture2D EmissionMultiplyTexture;
}
public class MatCapDefinition
{
	public Texture2D AdditiveTexture;
}
public class RimDefinition
{
	public Color RimColor;

	public Texture2D RimMultiplyTexture;

	public float RimLightingMixValue;

	public float RimFresnelPowerValue;

	public float RimLiftValue;
}
public class NormalDefinition
{
	public Texture2D NormalTexture;

	public float NormalScaleValue;
}
public class OutlineDefinition
{
	public OutlineWidthMode OutlineWidthMode;

	public float OutlineWidthValue;

	public Texture2D OutlineWidthMultiplyTexture;

	public float OutlineScaledMaxDistanceValue;

	public OutlineColorMode OutlineColorMode;

	public Color OutlineColor;

	public float OutlineLightingMixValue;
}
public class TextureUvCoordsDefinition
{
	public Vector2 MainTextureLeftBottomOriginScale;

	public Vector2 MainTextureLeftBottomOriginOffset;

	public Texture2D UvAnimationMaskTexture;

	public float UvAnimationScrollXSpeedValue;

	public float UvAnimationScrollYSpeedValue;

	public float UvAnimationRotationSpeedValue;
}
public static class Utils
{
	public const string ShaderName = "VRM/MToon";

	public const string PropVersion = "_MToonVersion";

	public const string PropDebugMode = "_DebugMode";

	public const string PropOutlineWidthMode = "_OutlineWidthMode";

	public const string PropOutlineColorMode = "_OutlineColorMode";

	public const string PropBlendMode = "_BlendMode";

	public const string PropCullMode = "_CullMode";

	public const string PropOutlineCullMode = "_OutlineCullMode";

	public const string PropCutoff = "_Cutoff";

	public const string PropColor = "_Color";

	public const string PropShadeColor = "_ShadeColor";

	public const string PropMainTex = "_MainTex";

	public const string PropShadeTexture = "_ShadeTexture";

	public const string PropBumpScale = "_BumpScale";

	public const string PropBumpMap = "_BumpMap";

	public const string PropReceiveShadowRate = "_ReceiveShadowRate";

	public const string PropReceiveShadowTexture = "_ReceiveShadowTexture";

	public const string PropShadingGradeRate = "_ShadingGradeRate";

	public const string PropShadingGradeTexture = "_ShadingGradeTexture";

	public const string PropShadeShift = "_ShadeShift";

	public const string PropShadeToony = "_ShadeToony";

	public const string PropLightColorAttenuation = "_LightColorAttenuation";

	public const string PropIndirectLightIntensity = "_IndirectLightIntensity";

	public const string PropRimColor = "_RimColor";

	public const string PropRimTexture = "_RimTexture";

	public const string PropRimLightingMix = "_RimLightingMix";

	public const string PropRimFresnelPower = "_RimFresnelPower";

	public const string PropRimLift = "_RimLift";

	public const string PropSphereAdd = "_SphereAdd";

	public const string PropEmissionColor = "_EmissionColor";

	public const string PropEmissionMap = "_EmissionMap";

	public const string PropOutlineWidthTexture = "_OutlineWidthTexture";

	public const string PropOutlineWidth = "_OutlineWidth";

	public const string PropOutlineScaledMaxDistance = "_OutlineScaledMaxDistance";

	public const string PropOutlineColor = "_OutlineColor";

	public const string PropOutlineLightingMix = "_OutlineLightingMix";

	public const string PropUvAnimMaskTexture = "_UvAnimMaskTexture";

	public const string PropUvAnimScrollX = "_UvAnimScrollX";

	public const string PropUvAnimScrollY = "_UvAnimScrollY";

	public const string PropUvAnimRotation = "_UvAnimRotation";

	public const string PropSrcBlend = "_SrcBlend";

	public const string PropDstBlend = "_DstBlend";

	public const string PropZWrite = "_ZWrite";

	public const string PropAlphaToMask = "_AlphaToMask";

	public const string KeyNormalMap = "_NORMALMAP";

	public const string KeyAlphaTestOn = "_ALPHATEST_ON";

	public const string KeyAlphaBlendOn = "_ALPHABLEND_ON";

	public const string KeyAlphaPremultiplyOn = "_ALPHAPREMULTIPLY_ON";

	public const string KeyOutlineWidthWorld = "MTOON_OUTLINE_WIDTH_WORLD";

	public const string KeyOutlineWidthScreen = "MTOON_OUTLINE_WIDTH_SCREEN";

	public const string KeyOutlineColorFixed = "MTOON_OUTLINE_COLOR_FIXED";

	public const string KeyOutlineColorMixed = "MTOON_OUTLINE_COLOR_MIXED";

	public const string KeyDebugNormal = "MTOON_DEBUG_NORMAL";

	public const string KeyDebugLitShadeRate = "MTOON_DEBUG_LITSHADERATE";

	public const string TagRenderTypeKey = "RenderType";

	public const string TagRenderTypeValueOpaque = "Opaque";

	public const string TagRenderTypeValueTransparentCutout = "TransparentCutout";

	public const string TagRenderTypeValueTransparent = "Transparent";

	public const int DisabledIntValue = 0;

	public const int EnabledIntValue = 1;

	public const string Implementation = "Santarh/MToon";

	public const int VersionNumber = 39;

	public static RenderQueueRequirement GetRenderQueueRequirement(RenderMode renderMode)
	{
		switch (renderMode)
		{
		case RenderMode.Opaque:
		{
			RenderQueueRequirement result = default(RenderQueueRequirement);
			result.DefaultValue = -1;
			result.MinValue = -1;
			result.MaxValue = -1;
			return result;
		}
		case RenderMode.Cutout:
		{
			RenderQueueRequirement result = default(RenderQueueRequirement);
			result.DefaultValue = 2450;
			result.MinValue = 2450;
			result.MaxValue = 2450;
			return result;
		}
		case RenderMode.Transparent:
		{
			RenderQueueRequirement result = default(RenderQueueRequirement);
			result.DefaultValue = 3000;
			result.MinValue = 2951;
			result.MaxValue = 3000;
			return result;
		}
		case RenderMode.TransparentWithZWrite:
		{
			RenderQueueRequirement result = default(RenderQueueRequirement);
			result.DefaultValue = 2501;
			result.MinValue = 2501;
			result.MaxValue = 2550;
			return result;
		}
		default:
			throw new ArgumentOutOfRangeException("renderMode", renderMode, null);
		}
	}

	public static MToonDefinition GetMToonParametersFromMaterial(Material material)
	{
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: 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_01a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0298: Unknown result type (might be due to invalid IL or missing references)
		//IL_029d: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02db: Unknown result type (might be due to invalid IL or missing references)
		return new MToonDefinition
		{
			Meta = new MetaDefinition
			{
				Implementation = "Santarh/MToon",
				VersionNumber = material.GetInt("_MToonVersion")
			},
			Rendering = new RenderingDefinition
			{
				RenderMode = GetBlendMode(material),
				CullMode = GetCullMode(material),
				RenderQueueOffsetNumber = GetRenderQueueOffset(material, GetRenderQueueOriginMode(material))
			},
			Color = new ColorDefinition
			{
				LitColor = GetColor(material, "_Color"),
				LitMultiplyTexture = GetTexture(material, "_MainTex"),
				ShadeColor = GetColor(material, "_ShadeColor"),
				ShadeMultiplyTexture = GetTexture(material, "_ShadeTexture"),
				CutoutThresholdValue = GetValue(material, "_Cutoff")
			},
			Lighting = new LightingDefinition
			{
				LitAndShadeMixing = new LitAndShadeMixingDefinition
				{
					ShadingShiftValue = GetValue(material, "_ShadeShift"),
					ShadingToonyValue = GetValue(material, "_ShadeToony"),
					ShadowReceiveMultiplierValue = GetValue(material, "_ReceiveShadowRate"),
					ShadowReceiveMultiplierMultiplyTexture = GetTexture(material, "_ReceiveShadowTexture"),
					LitAndShadeMixingMultiplierValue = GetValue(material, "_ShadingGradeRate"),
					LitAndShadeMixingMultiplierMultiplyTexture = GetTexture(material, "_ShadingGradeTexture")
				},
				LightingInfluence = new LightingInfluenceDefinition
				{
					LightColorAttenuationValue = GetValue(material, "_LightColorAttenuation"),
					GiIntensityValue = GetValue(material, "_IndirectLightIntensity")
				},
				Normal = new NormalDefinition
				{
					NormalTexture = GetTexture(material, "_BumpMap"),
					NormalScaleValue = GetValue(material, "_BumpScale")
				}
			},
			Emission = new EmissionDefinition
			{
				EmissionColor = GetColor(material, "_EmissionColor"),
				EmissionMultiplyTexture = GetTexture(material, "_EmissionMap")
			},
			MatCap = new MatCapDefinition
			{
				AdditiveTexture = GetTexture(material, "_SphereAdd")
			},
			Rim = new RimDefinition
			{
				RimColor = GetColor(material, "_RimColor"),
				RimMultiplyTexture = GetTexture(material, "_RimTexture"),
				RimLightingMixValue = GetValue(material, "_RimLightingMix"),
				RimFresnelPowerValue = GetValue(material, "_RimFresnelPower"),
				RimLiftValue = GetValue(material, "_RimLift")
			},
			Outline = new OutlineDefinition
			{
				OutlineWidthMode = GetOutlineWidthMode(material),
				OutlineWidthValue = GetValue(material, "_OutlineWidth"),
				OutlineWidthMultiplyTexture = GetTexture(material, "_OutlineWidthTexture"),
				OutlineScaledMaxDistanceValue = GetValue(material, "_OutlineScaledMaxDistance"),
				OutlineColorMode = GetOutlineColorMode(material),
				OutlineColor = GetColor(material, "_OutlineColor"),
				OutlineLightingMixValue = GetValue(material, "_OutlineLightingMix")
			},
			TextureOption = new TextureUvCoordsDefinition
			{
				MainTextureLeftBottomOriginScale = material.GetTextureScale("_MainTex"),
				MainTextureLeftBottomOriginOffset = material.GetTextureOffset("_MainTex"),
				UvAnimationMaskTexture = GetTexture(material, "_UvAnimMaskTexture"),
				UvAnimationScrollXSpeedValue = GetValue(material, "_UvAnimScrollX"),
				UvAnimationScrollYSpeedValue = GetValue(material, "_UvAnimScrollY"),
				UvAnimationRotationSpeedValue = GetValue(material, "_UvAnimRotation")
			}
		};
	}

	private static float GetValue(Material material, string propertyName)
	{
		return material.GetFloat(propertyName);
	}

	private static Color GetColor(Material material, string propertyName)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		return material.GetColor(propertyName);
	}

	private static Texture2D GetTexture(Material material, string propertyName)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Expected O, but got Unknown
		return (Texture2D)material.GetTexture(propertyName);
	}

	private static RenderMode GetBlendMode(Material material)
	{
		if (material.IsKeywordEnabled("_ALPHATEST_ON"))
		{
			return RenderMode.Cutout;
		}
		if (material.IsKeywordEnabled("_ALPHABLEND_ON"))
		{
			switch (material.GetInt("_ZWrite"))
			{
			case 1:
				return RenderMode.TransparentWithZWrite;
			case 0:
				return RenderMode.Transparent;
			default:
				Debug.LogWarning((object)"Invalid ZWrite Int Value.");
				return RenderMode.Transparent;
			}
		}
		return RenderMode.Opaque;
	}

	private static CullMode GetCullMode(Material material)
	{
		switch ((CullMode)material.GetInt("_CullMode"))
		{
		case CullMode.Off:
			return CullMode.Off;
		case CullMode.Front:
			return CullMode.Front;
		case CullMode.Back:
			return CullMode.Back;
		default:
			Debug.LogWarning((object)"Invalid CullMode.");
			return CullMode.Back;
		}
	}

	private static OutlineWidthMode GetOutlineWidthMode(Material material)
	{
		if (material.IsKeywordEnabled("MTOON_OUTLINE_WIDTH_WORLD"))
		{
			return OutlineWidthMode.WorldCoordinates;
		}
		if (material.IsKeywordEnabled("MTOON_OUTLINE_WIDTH_SCREEN"))
		{
			return OutlineWidthMode.ScreenCoordinates;
		}
		return OutlineWidthMode.None;
	}

	private static OutlineColorMode GetOutlineColorMode(Material material)
	{
		if (material.IsKeywordEnabled("MTOON_OUTLINE_COLOR_FIXED"))
		{
			return OutlineColorMode.FixedColor;
		}
		if (material.IsKeywordEnabled("MTOON_OUTLINE_COLOR_MIXED"))
		{
			return OutlineColorMode.MixedLighting;
		}
		return OutlineColorMode.FixedColor;
	}

	private static RenderMode GetRenderQueueOriginMode(Material material)
	{
		return GetBlendMode(material);
	}

	private static int GetRenderQueueOffset(Material material, RenderMode originMode)
	{
		int renderQueue = material.renderQueue;
		RenderQueueRequirement renderQueueRequirement = GetRenderQueueRequirement(originMode);
		if (renderQueue < renderQueueRequirement.MinValue || renderQueue > renderQueueRequirement.MaxValue)
		{
			return 0;
		}
		return renderQueue - renderQueueRequirement.DefaultValue;
	}

	public static void SetMToonParametersToMaterial(Material material, MToonDefinition parameters)
	{
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0165: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_0243: Unknown result type (might be due to invalid IL or missing references)
		//IL_0283: 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)
		MetaDefinition meta = parameters.Meta;
		SetValue(material, "_MToonVersion", meta.VersionNumber);
		RenderingDefinition rendering = parameters.Rendering;
		SetRenderMode(material, rendering.RenderMode, rendering.RenderQueueOffsetNumber, useDefaultRenderQueue: false);
		SetCullMode(material, rendering.CullMode);
		ColorDefinition color = parameters.Color;
		SetColor(material, "_Color", color.LitColor);
		SetTexture(material, "_MainTex", (Texture)(object)color.LitMultiplyTexture);
		SetColor(material, "_ShadeColor", color.ShadeColor);
		SetTexture(material, "_ShadeTexture", (Texture)(object)color.ShadeMultiplyTexture);
		SetValue(material, "_Cutoff", color.CutoutThresholdValue);
		LightingDefinition lighting = parameters.Lighting;
		LitAndShadeMixingDefinition litAndShadeMixing = lighting.LitAndShadeMixing;
		SetValue(material, "_ShadeShift", litAndShadeMixing.ShadingShiftValue);
		SetValue(material, "_ShadeToony", litAndShadeMixing.ShadingToonyValue);
		SetValue(material, "_ReceiveShadowRate", litAndShadeMixing.ShadowReceiveMultiplierValue);
		SetTexture(material, "_ReceiveShadowTexture", (Texture)(object)litAndShadeMixing.ShadowReceiveMultiplierMultiplyTexture);
		SetValue(material, "_ShadingGradeRate", litAndShadeMixing.LitAndShadeMixingMultiplierValue);
		SetTexture(material, "_ShadingGradeTexture", (Texture)(object)litAndShadeMixing.LitAndShadeMixingMultiplierMultiplyTexture);
		LightingInfluenceDefinition lightingInfluence = lighting.LightingInfluence;
		SetValue(material, "_LightColorAttenuation", lightingInfluence.LightColorAttenuationValue);
		SetValue(material, "_IndirectLightIntensity", lightingInfluence.GiIntensityValue);
		NormalDefinition normal = lighting.Normal;
		SetNormalMapping(material, (Texture)(object)normal.NormalTexture, normal.NormalScaleValue);
		EmissionDefinition emission = parameters.Emission;
		SetColor(material, "_EmissionColor", emission.EmissionColor);
		SetTexture(material, "_EmissionMap", (Texture)(object)emission.EmissionMultiplyTexture);
		MatCapDefinition matCap = parameters.MatCap;
		SetTexture(material, "_SphereAdd", (Texture)(object)matCap.AdditiveTexture);
		RimDefinition rim = parameters.Rim;
		SetColor(material, "_RimColor", rim.RimColor);
		SetTexture(material, "_RimTexture", (Texture)(object)rim.RimMultiplyTexture);
		SetValue(material, "_RimLightingMix", rim.RimLightingMixValue);
		SetValue(material, "_RimFresnelPower", rim.RimFresnelPowerValue);
		SetValue(material, "_RimLift", rim.RimLiftValue);
		OutlineDefinition outline = parameters.Outline;
		SetValue(material, "_OutlineWidth", outline.OutlineWidthValue);
		SetTexture(material, "_OutlineWidthTexture", (Texture)(object)outline.OutlineWidthMultiplyTexture);
		SetValue(material, "_OutlineScaledMaxDistance", outline.OutlineScaledMaxDistanceValue);
		SetColor(material, "_OutlineColor", outline.OutlineColor);
		SetValue(material, "_OutlineLightingMix", outline.OutlineLightingMixValue);
		SetOutlineMode(material, outline.OutlineWidthMode, outline.OutlineColorMode);
		TextureUvCoordsDefinition textureOption = parameters.TextureOption;
		material.SetTextureScale("_MainTex", textureOption.MainTextureLeftBottomOriginScale);
		material.SetTextureOffset("_MainTex", textureOption.MainTextureLeftBottomOriginOffset);
		material.SetTexture("_UvAnimMaskTexture", (Texture)(object)textureOption.UvAnimationMaskTexture);
		material.SetFloat("_UvAnimScrollX", textureOption.UvAnimationScrollXSpeedValue);
		material.SetFloat("_UvAnimScrollY", textureOption.UvAnimationScrollYSpeedValue);
		material.SetFloat("_UvAnimRotation", textureOption.UvAnimationRotationSpeedValue);
		ValidateProperties(material);
	}

	public static void ValidateProperties(Material material, bool isBlendModeChangedByUser = false)
	{
		SetRenderMode(material, (RenderMode)material.GetFloat("_BlendMode"), material.renderQueue - GetRenderQueueRequirement((RenderMode)material.GetFloat("_BlendMode")).DefaultValue, isBlendModeChangedByUser);
		SetNormalMapping(material, material.GetTexture("_BumpMap"), material.GetFloat("_BumpScale"));
		SetOutlineMode(material, (OutlineWidthMode)material.GetFloat("_OutlineWidthMode"), (OutlineColorMode)material.GetFloat("_OutlineColorMode"));
		SetDebugMode(material, (DebugMode)material.GetFloat("_DebugMode"));
		SetCullMode(material, (CullMode)material.GetFloat("_CullMode"));
		Texture texture = material.GetTexture("_MainTex");
		Texture texture2 = material.GetTexture("_ShadeTexture");
		if ((Object)(object)texture != (Object)null && (Object)(object)texture2 == (Object)null)
		{
			material.SetTexture("_ShadeTexture", texture);
		}
	}

	private static void SetDebugMode(Material material, DebugMode debugMode)
	{
		SetValue(material, "_DebugMode", (float)debugMode);
		switch (debugMode)
		{
		case DebugMode.None:
			SetKeyword(material, "MTOON_DEBUG_NORMAL", required: false);
			SetKeyword(material, "MTOON_DEBUG_LITSHADERATE", required: false);
			break;
		case DebugMode.Normal:
			SetKeyword(material, "MTOON_DEBUG_NORMAL", required: true);
			SetKeyword(material, "MTOON_DEBUG_LITSHADERATE", required: false);
			break;
		case DebugMode.LitShadeRate:
			SetKeyword(material, "MTOON_DEBUG_NORMAL", required: false);
			SetKeyword(material, "MTOON_DEBUG_LITSHADERATE", required: true);
			break;
		}
	}

	private static void SetRenderMode(Material material, RenderMode renderMode, int renderQueueOffset, bool useDefaultRenderQueue)
	{
		SetValue(material, "_BlendMode", (float)renderMode);
		switch (renderMode)
		{
		case RenderMode.Opaque:
			material.SetOverrideTag("RenderType", "Opaque");
			material.SetInt("_SrcBlend", 1);
			material.SetInt("_DstBlend", 0);
			material.SetInt("_ZWrite", 1);
			material.SetInt("_AlphaToMask", 0);
			SetKeyword(material, "_ALPHATEST_ON", required: false);
			SetKeyword(material, "_ALPHABLEND_ON", required: false);
			SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false);
			break;
		case RenderMode.Cutout:
			material.SetOverrideTag("RenderType", "TransparentCutout");
			material.SetInt("_SrcBlend", 1);
			material.SetInt("_DstBlend", 0);
			material.SetInt("_ZWrite", 1);
			material.SetInt("_AlphaToMask", 1);
			SetKeyword(material, "_ALPHATEST_ON", required: true);
			SetKeyword(material, "_ALPHABLEND_ON", required: false);
			SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false);
			break;
		case RenderMode.Transparent:
			material.SetOverrideTag("RenderType", "Transparent");
			material.SetInt("_SrcBlend", 5);
			material.SetInt("_DstBlend", 10);
			material.SetInt("_ZWrite", 0);
			material.SetInt("_AlphaToMask", 0);
			SetKeyword(material, "_ALPHATEST_ON", required: false);
			SetKeyword(material, "_ALPHABLEND_ON", required: true);
			SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false);
			break;
		case RenderMode.TransparentWithZWrite:
			material.SetOverrideTag("RenderType", "Transparent");
			material.SetInt("_SrcBlend", 5);
			material.SetInt("_DstBlend", 10);
			material.SetInt("_ZWrite", 1);
			material.SetInt("_AlphaToMask", 0);
			SetKeyword(material, "_ALPHATEST_ON", required: false);
			SetKeyword(material, "_ALPHABLEND_ON", required: true);
			SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false);
			break;
		}
		if (useDefaultRenderQueue)
		{
			material.renderQueue = GetRenderQueueRequirement(renderMode).DefaultValue;
			return;
		}
		RenderQueueRequirement renderQueueRequirement = GetRenderQueueRequirement(renderMode);
		material.renderQueue = Mathf.Clamp(renderQueueRequirement.DefaultValue + renderQueueOffset, renderQueueRequirement.MinValue, renderQueueRequirement.MaxValue);
	}

	private static void SetOutlineMode(Material material, OutlineWidthMode outlineWidthMode, OutlineColorMode outlineColorMode)
	{
		SetValue(material, "_OutlineWidthMode", (float)outlineWidthMode);
		SetValue(material, "_OutlineColorMode", (float)outlineColorMode);
		bool required = outlineColorMode == OutlineColorMode.FixedColor;
		bool required2 = outlineColorMode == OutlineColorMode.MixedLighting;
		switch (outlineWidthMode)
		{
		case OutlineWidthMode.None:
			SetKeyword(material, "MTOON_OUTLINE_WIDTH_WORLD", required: false);
			SetKeyword(material, "MTOON_OUTLINE_WIDTH_SCREEN", required: false);
			SetKeyword(material, "MTOON_OUTLINE_COLOR_FIXED", required: false);
			SetKeyword(material, "MTOON_OUTLINE_COLOR_MIXED", required: false);
			break;
		case OutlineWidthMode.WorldCoordinates:
			SetKeyword(material, "MTOON_OUTLINE_WIDTH_WORLD", required: true);
			SetKeyword(material, "MTOON_OUTLINE_WIDTH_SCREEN", required: false);
			SetKeyword(material, "MTOON_OUTLINE_COLOR_FIXED", required);
			SetKeyword(material, "MTOON_OUTLINE_COLOR_MIXED", required2);
			break;
		case OutlineWidthMode.ScreenCoordinates:
			SetKeyword(material, "MTOON_OUTLINE_WIDTH_WORLD", required: false);
			SetKeyword(material, "MTOON_OUTLINE_WIDTH_SCREEN", required: true);
			SetKeyword(material, "MTOON_OUTLINE_COLOR_FIXED", required);
			SetKeyword(material, "MTOON_OUTLINE_COLOR_MIXED", required2);
			break;
		}
	}

	private static void SetNormalMapping(Material material, Texture bumpMap, float bumpScale)
	{
		SetTexture(material, "_BumpMap", bumpMap);
		SetValue(material, "_BumpScale", bumpScale);
		SetKeyword(material, "_NORMALMAP", (Object)(object)bumpMap != (Object)null);
	}

	private static void SetCullMode(Material material, CullMode cullMode)
	{
		SetValue(material, "_CullMode", (float)cullMode);
		switch (cullMode)
		{
		case CullMode.Back:
			material.SetInt("_CullMode", 2);
			material.SetInt("_OutlineCullMode", 1);
			break;
		case CullMode.Front:
			material.SetInt("_CullMode", 1);
			material.SetInt("_OutlineCullMode", 2);
			break;
		case CullMode.Off:
			material.SetInt("_CullMode", 0);
			material.SetInt("_OutlineCullMode", 1);
			break;
		}
	}

	private static void SetValue(Material material, string propertyName, float val)
	{
		material.SetFloat(propertyName, val);
	}

	private static void SetColor(Material material, string propertyName, Color color)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		material.SetColor(propertyName, color);
	}

	private static void SetTexture(Material material, string propertyName, Texture texture)
	{
		material.SetTexture(propertyName, texture);
	}

	private static void SetKeyword(Material mat, string keyword, bool required)
	{
		if (required)
		{
			mat.EnableKeyword(keyword);
		}
		else
		{
			mat.DisableKeyword(keyword);
		}
	}
}

valheim_Data/Managed/UniGLTF.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.Numerics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using UniGLTF;
using UniGLTF.Extensions.VRMC_materials_hdr_emissiveMultiplier;
using UniGLTF.MeshUtility;
using UniGLTF.UniUnlit;
using UniGLTF.Utils;
using UniGLTF.Zip;
using UniJSON;
using Unity.Collections;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using VRMShaders;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
public class RenderPipelineMaterialDescriptorGeneratorUtility
{
	protected static RenderPipelineTypes GetRenderPipelineType()
	{
		RenderPipeline currentPipeline = RenderPipelineManager.currentPipeline;
		if (currentPipeline == null)
		{
			return RenderPipelineTypes.BuiltinRenderPipeline;
		}
		if (((object)currentPipeline).GetType().Name.Contains("HDRenderPipeline"))
		{
			return RenderPipelineTypes.HighDefinitionRenderPipeline;
		}
		if (((object)currentPipeline).GetType().Name.Contains("UniversalRenderPipeline"))
		{
			return RenderPipelineTypes.UniversalRenderPipeline;
		}
		return RenderPipelineTypes.Unknown;
	}

	public static IMaterialDescriptorGenerator GetValidGLTFMaterialDescriptorGenerator()
	{
		return GetRenderPipelineType() switch
		{
			RenderPipelineTypes.UniversalRenderPipeline => new UrpGltfMaterialDescriptorGenerator(), 
			RenderPipelineTypes.BuiltinRenderPipeline => new BuiltInGltfMaterialDescriptorGenerator(), 
			_ => null, 
		};
	}
}
public static class TriangleUtil
{
	public static IEnumerable<int> FlipTriangle(IEnumerable<byte> src)
	{
		return FlipTriangle(src.Select((Func<byte, int>)((byte x) => x)));
	}

	public static IEnumerable<int> FlipTriangle(IEnumerable<ushort> src)
	{
		return FlipTriangle(src.Select((Func<ushort, int>)((ushort x) => x)));
	}

	public static IEnumerable<int> FlipTriangle(IEnumerable<uint> src)
	{
		return FlipTriangle(src.Select((uint x) => (int)x));
	}

	public static IEnumerable<int> FlipTriangle(IEnumerable<int> src)
	{
		IEnumerator<int> it = src.GetEnumerator();
		while (it.MoveNext())
		{
			int i0 = it.Current;
			if (!it.MoveNext())
			{
				break;
			}
			int i1 = it.Current;
			if (!it.MoveNext())
			{
				break;
			}
			yield return it.Current;
			yield return i1;
			yield return i0;
		}
	}
}
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[11813]
		{
			0, 0, 0, 4, 0, 0, 0, 53, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 92, 65, 114, 114, 97, 121, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 63, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 92, 67, 111, 108, 111, 114, 67,
			111, 110, 118, 101, 114, 115, 105, 111, 110, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 52,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 103, 108, 84, 70, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 53,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 73, 110, 100, 101, 120,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			56, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 92, 78, 117, 109, 101,
			114, 105, 99, 115, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 54, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 92,
			83, 116, 114, 105, 110, 103, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
			0, 0, 3, 0, 0, 0, 53, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 92, 85, 110, 105, 116, 121, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 52, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 101, 115, 104, 85, 116, 105, 108,
			105, 116, 121, 92, 66, 105, 110, 100, 112, 111,
			115, 101, 71, 105, 122, 109, 111, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 55, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 101, 115, 104, 85, 116, 105, 108,
			105, 116, 121, 92, 66, 108, 101, 110, 100, 83,
			104, 97, 112, 101, 82, 101, 112, 111, 114, 116,
			46, 99, 115, 0, 0, 0, 3, 0, 0, 0,
			53, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 101, 115, 104, 85,
			116, 105, 108, 105, 116, 121, 92, 66, 111, 110,
			101, 77, 101, 115, 104, 69, 114, 97, 115, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 53, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 77, 101, 115, 104,
			85, 116, 105, 108, 105, 116, 121, 92, 66, 111,
			110, 101, 78, 111, 114, 109, 97, 108, 105, 122,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 54, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 101, 115,
			104, 85, 116, 105, 108, 105, 116, 121, 92, 71,
			108, 116, 102, 77, 101, 115, 104, 85, 116, 105,
			108, 105, 116, 121, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 53, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 77,
			101, 115, 104, 85, 116, 105, 108, 105, 116, 121,
			92, 77, 101, 115, 104, 65, 116, 116, 97, 99,
			104, 73, 110, 102, 111, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 50, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			77, 101, 115, 104, 85, 116, 105, 108, 105, 116,
			121, 92, 77, 101, 115, 104, 69, 120, 99, 108,
			117, 100, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 53, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 77, 101,
			115, 104, 85, 116, 105, 108, 105, 116, 121, 92,
			77, 101, 115, 104, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 50, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 77,
			101, 115, 104, 85, 116, 105, 108, 105, 116, 121,
			92, 77, 101, 115, 104, 70, 114, 101, 101, 122,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 59, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 101, 115,
			104, 85, 116, 105, 108, 105, 116, 121, 92, 77,
			101, 115, 104, 73, 110, 116, 101, 103, 114, 97,
			116, 105, 111, 110, 71, 114, 111, 117, 112, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 60,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 77, 101, 115, 104, 85, 116,
			105, 108, 105, 116, 121, 92, 77, 101, 115, 104,
			73, 110, 116, 101, 103, 114, 97, 116, 105, 111,
			110, 82, 101, 115, 117, 108, 116, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 53, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 101, 115, 104, 85, 116, 105, 108,
			105, 116, 121, 92, 77, 101, 115, 104, 73, 110,
			116, 101, 103, 114, 97, 116, 111, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 56, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 77, 101, 115, 104, 85, 116, 105,
			108, 105, 116, 121, 92, 84, 114, 105, 97, 110,
			103, 108, 101, 83, 101, 112, 97, 114, 97, 116,
			111, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 95, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 70, 111, 114, 109, 97,
			116, 92, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 65, 110, 100, 69, 120, 116, 114, 97,
			115, 92, 69, 109, 105, 115, 115, 105, 118, 101,
			77, 117, 108, 116, 105, 112, 108, 105, 101, 114,
			92, 68, 101, 115, 101, 114, 105, 97, 108, 105,
			122, 101, 114, 46, 103, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 89, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 70, 111,
			114, 109, 97, 116, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 65, 110, 100, 69, 120,
			116, 114, 97, 115, 92, 69, 109, 105, 115, 115,
			105, 118, 101, 77, 117, 108, 116, 105, 112, 108,
			105, 101, 114, 92, 70, 111, 114, 109, 97, 116,
			46, 103, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 93, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 70, 111, 114, 109, 97,
			116, 92, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 65, 110, 100, 69, 120, 116, 114, 97,
			115, 92, 69, 109, 105, 115, 115, 105, 118, 101,
			77, 117, 108, 116, 105, 112, 108, 105, 101, 114,
			92, 83, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 46, 103, 46, 99, 115, 0, 0, 0, 4,
			0, 0, 0, 75, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 70, 111, 114, 109,
			97, 116, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 65, 110, 100, 69, 120, 116, 114,
			97, 115, 92, 103, 108, 116, 102, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 90, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 70,
			111, 114, 109, 97, 116, 92, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 65, 110, 100, 69,
			120, 116, 114, 97, 115, 92, 103, 108, 116, 102,
			95, 109, 101, 115, 104, 95, 101, 120, 116, 114,
			97, 115, 95, 116, 97, 114, 103, 101, 116, 78,
			97, 109, 101, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 93, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 65, 110, 100, 69, 120, 116,
			114, 97, 115, 92, 75, 72, 82, 95, 109, 97,
			116, 101, 114, 105, 97, 108, 115, 95, 101, 109,
			105, 115, 115, 105, 118, 101, 95, 115, 116, 114,
			101, 110, 103, 116, 104, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 81, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 70, 111,
			114, 109, 97, 116, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 65, 110, 100, 69, 120,
			116, 114, 97, 115, 92, 75, 72, 82, 95, 109,
			97, 116, 101, 114, 105, 97, 108, 115, 95, 117,
			110, 108, 105, 116, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 80, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 65, 110, 100, 69, 120, 116,
			114, 97, 115, 92, 75, 72, 82, 95, 116, 101,
			120, 116, 117, 114, 101, 95, 98, 97, 115, 105,
			115, 117, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 83, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 70, 111, 114, 109, 97,
			116, 92, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 65, 110, 100, 69, 120, 116, 114, 97,
			115, 92, 75, 72, 82, 95, 116, 101, 120, 116,
			117, 114, 101, 95, 116, 114, 97, 110, 115, 102,
			111, 114, 109, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 50, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 70, 111, 114, 109,
			97, 116, 92, 103, 108, 98, 84, 121, 112, 101,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 48, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 70, 111, 114, 109, 97, 116,
			92, 103, 108, 69, 110, 117, 109, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 46, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			70, 111, 114, 109, 97, 116, 92, 103, 108, 84,
			70, 46, 99, 115, 0, 0, 0, 4, 0, 0,
			0, 55, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 70, 111, 114, 109, 97, 116,
			92, 103, 108, 84, 70, 65, 110, 105, 109, 97,
			116, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 52, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 103, 108, 84, 70, 65, 115,
			115, 101, 116, 115, 46, 99, 115, 0, 0, 0,
			6, 0, 0, 0, 52, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 103, 108, 84, 70, 66, 117,
			102, 102, 101, 114, 46, 99, 115, 0, 0, 0,
			3, 0, 0, 0, 52, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 103, 108, 84, 70, 67, 97,
			109, 101, 114, 97, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 60, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 71, 108, 116, 102, 68, 101,
			115, 101, 114, 105, 97, 108, 105, 122, 101, 114,
			46, 103, 46, 99, 115, 0, 0, 0, 8, 0,
			0, 0, 54, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 70, 111, 114, 109, 97,
			116, 92, 103, 108, 84, 70, 77, 97, 116, 101,
			114, 105, 97, 108, 46, 99, 115, 0, 0, 0,
			4, 0, 0, 0, 50, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 103, 108, 84, 70, 77, 101,
			115, 104, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 50, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 70, 111, 114, 109, 97,
			116, 92, 103, 108, 84, 70, 78, 111, 100, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			58, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 70, 111, 114, 109, 97, 116, 92,
			71, 108, 116, 102, 83, 101, 114, 105, 97, 108,
			105, 122, 101, 114, 46, 103, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 50, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 70,
			111, 114, 109, 97, 116, 92, 103, 108, 84, 70,
			83, 107, 105, 110, 46, 99, 115, 0, 0, 0,
			3, 0, 0, 0, 53, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 70, 111, 114,
			109, 97, 116, 92, 103, 108, 84, 70, 84, 101,
			120, 116, 117, 114, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 50, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 70, 111,
			114, 109, 97, 116, 92, 73, 83, 116, 111, 114,
			97, 103, 101, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 61, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 70, 111, 114, 109,
			97, 116, 92, 74, 115, 111, 110, 83, 99, 104,
			101, 109, 97, 65, 116, 116, 114, 105, 98, 117,
			116, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 71, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 65, 110,
			105, 109, 97, 116, 105, 111, 110, 73, 79, 92,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 73,
			109, 112, 111, 114, 116, 101, 114, 85, 116, 105,
			108, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 68, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 73, 79, 92, 73,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 69,
			120, 112, 111, 114, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 53, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 65, 114, 114, 97, 121, 66, 121,
			116, 101, 66, 117, 102, 102, 101, 114, 46, 99,
			115, 0, 0, 0, 3, 0, 0, 0, 46, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 65, 114, 114, 97, 121, 80,
			105, 110, 46, 99, 115, 0, 0, 0, 4, 0,
			0, 0, 42, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 65, 120,
			101, 115, 46, 99, 115, 0, 0, 0, 3, 0,
			0, 0, 52, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 66, 117,
			102, 102, 101, 114, 65, 99, 99, 101, 115, 115,
			111, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 43, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 66, 121,
			116, 101, 51, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 43, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 66,
			121, 116, 101, 52, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 49, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			66, 121, 116, 101, 115, 82, 101, 97, 100, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 55, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 69, 120, 112,
			111, 114, 116, 105, 110, 103, 71, 108, 116, 102,
			68, 97, 116, 97, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 55, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			70, 105, 108, 101, 83, 121, 115, 116, 101, 109,
			83, 116, 111, 114, 97, 103, 101, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 49, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 103, 108, 98, 73, 109, 112, 111,
			114, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 46, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			71, 108, 116, 102, 68, 97, 116, 97, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 50, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 103, 108, 116, 102, 69, 120,
			112, 111, 114, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 56, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 71, 108, 116, 102, 69, 120, 112, 111,
			114, 116, 83, 101, 116, 116, 105, 110, 103, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			50, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 73, 79, 92, 71, 108, 116, 102,
			74, 115, 111, 110, 85, 116, 105, 108, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 49, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 71, 108, 116, 102, 85, 116,
			105, 108, 105, 116, 121, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 53, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 73, 109, 112, 111, 114, 116, 101, 114, 67,
			111, 110, 116, 101, 120, 116, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 63, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 73, 109, 112, 111, 114, 116, 101, 114,
			67, 111, 110, 116, 101, 120, 116, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 61, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 73, 109, 112, 111, 114, 116, 101,
			114, 67, 111, 110, 116, 101, 120, 116, 83, 112,
			101, 101, 100, 76, 111, 103, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 93, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 79, 92, 66, 117, 105, 108, 116, 73, 110,
			82, 80, 92, 69, 120, 112, 111, 114, 116, 92,
			66, 117, 105, 108, 116, 73, 110, 71, 108, 116,
			102, 77, 97, 116, 101, 114, 105, 97, 108, 69,
			120, 112, 111, 114, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 107, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 79, 92, 66, 117, 105, 108, 116, 73,
			110, 82, 80, 92, 69, 120, 112, 111, 114, 116,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 115,
			92, 66, 117, 105, 108, 116, 73, 110, 70, 97,
			108, 108, 98, 97, 99, 107, 77, 97, 116, 101,
			114, 105, 97, 108, 69, 120, 112, 111, 114, 116,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 111, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 77, 97,
			116, 101, 114, 105, 97, 108, 73, 79, 92, 66,
			117, 105, 108, 116, 73, 110, 82, 80, 92, 69,
			120, 112, 111, 114, 116, 92, 77, 97, 116, 101,
			114, 105, 97, 108, 115, 92, 66, 117, 105, 108,
			116, 73, 110, 71, 101, 110, 101, 114, 105, 99,
			85, 110, 108, 105, 116, 77, 97, 116, 101, 114,
			105, 97, 108, 69, 120, 112, 111, 114, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 107, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 79, 92, 66, 117,
			105, 108, 116, 73, 110, 82, 80, 92, 69, 120,
			112, 111, 114, 116, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 92, 66, 117, 105, 108, 116,
			73, 110, 83, 116, 97, 110, 100, 97, 114, 100,
			77, 97, 116, 101, 114, 105, 97, 108, 69, 120,
			112, 111, 114, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 107, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 79, 92, 66, 117, 105, 108, 116, 73, 110,
			82, 80, 92, 69, 120, 112, 111, 114, 116, 92,
			77, 97, 116, 101, 114, 105, 97, 108, 115, 92,
			66, 117, 105, 108, 116, 73, 110, 85, 110, 105,
			85, 110, 108, 105, 116, 77, 97, 116, 101, 114,
			105, 97, 108, 69, 120, 112, 111, 114, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 104, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 79, 92, 66, 117,
			105, 108, 116, 73, 110, 82, 80, 92, 73, 109,
			112, 111, 114, 116, 92, 66, 117, 105, 108, 116,
			73, 110, 71, 108, 116, 102, 77, 97, 116, 101,
			114, 105, 97, 108, 68, 101, 115, 99, 114, 105,
			112, 116, 111, 114, 71, 101, 110, 101, 114, 97,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 110, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 73, 79, 92,
			66, 117, 105, 108, 116, 73, 110, 82, 80, 92,
			73, 109, 112, 111, 114, 116, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 115, 92, 66, 117, 105,
			108, 116, 73, 110, 71, 108, 116, 102, 68, 101,
			102, 97, 117, 108, 116, 77, 97, 116, 101, 114,
			105, 97, 108, 73, 109, 112, 111, 114, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 106, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 79, 92, 66, 117,
			105, 108, 116, 73, 110, 82, 80, 92, 73, 109,
			112, 111, 114, 116, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 92, 66, 117, 105, 108, 116,
			73, 110, 71, 108, 116, 102, 80, 98, 114, 77,
			97, 116, 101, 114, 105, 97, 108, 73, 109, 112,
			111, 114, 116, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 108, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 73,
			79, 92, 66, 117, 105, 108, 116, 73, 110, 82,
			80, 92, 73, 109, 112, 111, 114, 116, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 115, 92, 66,
			117, 105, 108, 116, 73, 110, 71, 108, 116, 102,
			85, 110, 108, 105, 116, 77, 97, 116, 101, 114,
			105, 97, 108, 73, 109, 112, 111, 114, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 72, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 79, 92, 71, 108,
			116, 102, 77, 97, 116, 101, 114, 105, 97, 108,
			69, 120, 112, 111, 114, 116, 85, 116, 105, 108,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 72, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 79, 92, 71, 108,
			116, 102, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 109, 112, 111, 114, 116, 85, 116, 105, 108,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 77, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 79, 92, 73, 77,
			97, 116, 101, 114, 105, 97, 108, 68, 101, 115,
			99, 114, 105, 112, 116, 111, 114, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 66, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 79, 92, 73, 77, 97, 116, 101, 114, 105,
			97, 108, 69, 120, 112, 111, 114, 116, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			80, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 73, 79, 92, 77, 97, 116, 101,
			114, 105, 97, 108, 73, 79, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 109, 112, 111, 114,
			116, 101, 114, 80, 97, 114, 97, 109, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 88, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 79, 92, 82, 101, 110, 100, 101,
			114, 80, 105, 112, 101, 108, 105, 110, 101, 77,
			97, 116, 101, 114, 105, 97, 108, 68, 101, 115,
			99, 114, 105, 112, 116, 111, 114, 85, 116, 105,
			108, 105, 116, 121, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 65, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			77, 97, 116, 101, 114, 105, 97, 108, 73, 79,
			92, 84, 101, 120, 116, 117, 114, 101, 84, 114,
			97, 110, 115, 102, 111, 114, 109, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 100, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 79, 92, 85, 82, 80, 92, 73, 109,
			112, 111, 114, 116, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 92, 85, 114, 112, 71, 108,
			116, 102, 68, 101, 102, 97, 117, 108, 116, 77,
			97, 116, 101, 114, 105, 97, 108, 73, 109, 112,
			111, 114, 116, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 96, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 73,
			79, 92, 85, 82, 80, 92, 73, 109, 112, 111,
			114, 116, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 115, 92, 85, 114, 112, 71, 108, 116, 102,
			80, 98, 114, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 109, 112, 111, 114, 116, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 94,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 73, 79, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 73, 79, 92, 85, 82, 80, 92,
			73, 109, 112, 111, 114, 116, 92, 85, 114, 112,
			71, 108, 116, 102, 77, 97, 116, 101, 114, 105,
			97, 108, 68, 101, 115, 99, 114, 105, 112, 116,
			111, 114, 71, 101, 110, 101, 114, 97, 116, 111,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 63, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 101, 115,
			104, 73, 79, 92, 66, 108, 101, 110, 100, 83,
			104, 97, 112, 101, 69, 120, 112, 111, 114, 116,
			101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 61, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 77, 101,
			115, 104, 73, 79, 92, 66, 108, 101, 110, 100,
			83, 104, 97, 112, 101, 70, 105, 108, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 59, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 101, 115,
			104, 73, 79, 92, 74, 111, 105, 110, 116, 115,
			65, 99, 99, 101, 115, 115, 111, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 53, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 77, 101, 115, 104, 73, 79,
			92, 77, 101, 115, 104, 68, 97, 116, 97, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 77,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 73, 79, 92, 77, 101, 115, 104, 73,
			79, 92, 77, 101, 115, 104, 69, 120, 112, 111,
			114, 116, 101, 114, 95, 68, 105, 118, 105, 100,
			101, 100, 86, 101, 114, 116, 101, 120, 66, 117,
			102, 102, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 76, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			77, 101, 115, 104, 73, 79, 92, 77, 101, 115,
			104, 69, 120, 112, 111, 114, 116, 101, 114, 95,
			83, 104, 97, 114, 101, 100, 86, 101, 114, 116,
			101, 120, 66, 117, 102, 102, 101, 114, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 59, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 77, 101, 115, 104, 73, 79,
			92, 77, 101, 115, 104, 69, 120, 112, 111, 114,
			116, 73, 110, 102, 111, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 59, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 77, 101, 115, 104, 73, 79, 92, 77, 101,
			115, 104, 69, 120, 112, 111, 114, 116, 85, 116,
			105, 108, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 57, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 77, 101,
			115, 104, 73, 79, 92, 77, 101, 115, 104, 85,
			112, 108, 111, 97, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 56, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 77, 101, 115, 104, 73, 79, 92,
			77, 101, 115, 104, 86, 101, 114, 116, 101, 120,
			48, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 56, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 77, 101, 115,
			104, 73, 79, 92, 77, 101, 115, 104, 86, 101,
			114, 116, 101, 120, 49, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 56, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 77, 101, 115, 104, 73, 79, 92, 77, 101,
			115, 104, 86, 101, 114, 116, 101, 120, 50, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 62,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 73, 79, 92, 77, 101, 115, 104, 73,
			79, 92, 77, 101, 115, 104, 86, 101, 114, 116,
			101, 120, 85, 116, 105, 108, 105, 116, 121, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 62,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 73, 79, 92, 77, 101, 115, 104, 73,
			79, 92, 77, 101, 115, 104, 87, 105, 116, 104,
			77, 97, 116, 101, 114, 105, 97, 108, 115, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 59,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 73, 79, 92, 77, 101, 115, 104, 73,
			79, 92, 80, 111, 115, 105, 116, 105, 111, 110,
			77, 105, 110, 77, 97, 120, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 64, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 77, 101, 115, 104, 73, 79, 92, 80,
			114, 105, 109, 105, 116, 105, 118, 101, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 57, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 77, 101, 115, 104, 73, 79,
			92, 83, 107, 105, 110, 110, 105, 110, 103, 73,
			110, 102, 111, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 57, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 77,
			101, 115, 104, 73, 79, 92, 84, 114, 105, 97,
			110, 103, 108, 101, 85, 116, 105, 108, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 61, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 77, 101, 115, 104, 73, 79,
			92, 86, 101, 114, 116, 101, 120, 67, 111, 108,
			111, 114, 83, 116, 97, 116, 101, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 60, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 77, 101, 115, 104, 73, 79, 92,
			87, 101, 105, 103, 104, 116, 115, 65, 99, 99,
			101, 115, 115, 111, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 52, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 77, 105, 103, 114, 97, 116, 105, 111, 110,
			70, 108, 97, 103, 115, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 61, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 77, 111, 110, 111, 66, 101, 104, 97, 118,
			105, 111, 117, 114, 67, 111, 109, 112, 97, 114,
			97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 56, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			78, 97, 116, 105, 118, 101, 65, 114, 114, 97,
			121, 77, 97, 110, 97, 103, 101, 114, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 50, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 78, 111, 100, 101, 73, 109,
			112, 111, 114, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 63, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 80, 97, 114, 115, 101, 114, 92, 65,
			117, 116, 111, 71, 108, 116, 102, 70, 105, 108,
			101, 80, 97, 114, 115, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 60, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 80, 97, 114, 115, 101, 114, 92,
			71, 108, 98, 66, 105, 110, 97, 114, 121, 80,
			97, 114, 115, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 58, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 80, 97, 114, 115, 101, 114, 92, 71, 108,
			98, 70, 105, 108, 101, 80, 97, 114, 115, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 62, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 80, 97, 114,
			115, 101, 114, 92, 71, 108, 98, 76, 111, 119,
			76, 101, 118, 101, 108, 80, 97, 114, 115, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 76, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 80, 97, 114,
			115, 101, 114, 92, 71, 108, 116, 102, 70, 105,
			108, 101, 87, 105, 116, 104, 82, 101, 115, 111,
			117, 114, 99, 101, 70, 105, 108, 101, 115, 80,
			97, 114, 115, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 70, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 80, 97, 114, 115, 101, 114, 92, 90, 105,
			112, 65, 114, 99, 104, 105, 118, 101, 100, 71,
			108, 116, 102, 70, 105, 108, 101, 80, 97, 114,
			115, 101, 114, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 50, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 80,
			114, 111, 103, 114, 101, 115, 115, 73, 110, 102,
			111, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 53, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 73, 79, 92, 83, 97, 102,
			101, 77, 97, 114, 115, 104, 97, 108, 67, 111,
			112, 121, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 44, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 73, 79, 92, 83, 66,
			121, 116, 101, 52, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 47, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			83, 107, 105, 110, 74, 111, 105, 110, 116, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 70,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 73, 79, 92, 84, 101, 120, 116, 117,
			114, 101, 73, 79, 92, 71, 108, 116, 102, 80,
			98, 114, 84, 101, 120, 116, 117, 114, 101, 73,
			109, 112, 111, 114, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 78, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 84, 101, 120, 116, 117, 114, 101,
			73, 79, 92, 71, 108, 116, 102, 84, 101, 120,
			116, 117, 114, 101, 68, 101, 115, 99, 114, 105,
			112, 116, 111, 114, 71, 101, 110, 101, 114, 97,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 67, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 84,
			101, 120, 116, 117, 114, 101, 73, 79, 92, 71,
			108, 116, 102, 84, 101, 120, 116, 117, 114, 101,
			69, 120, 112, 111, 114, 116, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 67, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 73, 79, 92, 84, 101, 120, 116, 117, 114,
			101, 73, 79, 92, 71, 108, 116, 102, 84, 101,
			120, 116, 117, 114, 101, 73, 109, 112, 111, 114,
			116, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 75, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 84,
			101, 120, 116, 117, 114, 101, 73, 79, 92, 73,
			84, 101, 120, 116, 117, 114, 101, 68, 101, 115,
			99, 114, 105, 112, 116, 111, 114, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 66, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 73,
			79, 92, 84, 101, 120, 116, 117, 114, 101, 73,
			79, 92, 84, 101, 120, 116, 117, 114, 101, 83,
			97, 109, 112, 108, 101, 114, 85, 116, 105, 108,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			47, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 73, 79, 92, 85, 110, 105, 116,
			121, 80, 97, 116, 104, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 51, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 73, 79,
			92, 85, 114, 105, 66, 121, 116, 101, 66, 117,
			102, 102, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 45, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 73, 79, 92,
			85, 83, 104, 111, 114, 116, 50, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 45, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			73, 79, 92, 85, 83, 104, 111, 114, 116, 51,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			45, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 73, 79, 92, 85, 83, 104, 111,
			114, 116, 52, 46, 99, 115, 0, 0, 0, 6,
			0, 0, 0, 55, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 73, 79, 92, 90,
			105, 112, 65, 114, 99, 104, 105, 118, 101, 83,
			116, 111, 114, 97, 103, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 49, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 80,
			97, 99, 107, 97, 103, 101, 86, 101, 114, 115,
			105, 111, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 56, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 80, 97, 99, 107,
			97, 103, 101, 86, 101, 114, 115, 105, 111, 110,
			80, 97, 114, 116, 105, 97, 108, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 54, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 71, 108, 116,
			102, 73, 110, 115, 116, 97, 110, 99, 101, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 51,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 85, 110, 105, 71, 76, 84, 70, 69,
			120, 99, 101, 112, 116, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 49, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 85, 110, 105, 71, 76, 84, 70, 86, 101,
			114, 115, 105, 111, 110, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 57, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 85, 110,
			105, 71, 76, 84, 70, 86, 101, 114, 115, 105,
			111, 110, 95, 112, 97, 114, 116, 105, 97, 108,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			56, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 86, 97, 108, 105, 100, 97, 116,
			105, 111, 110, 92, 86, 97, 108, 105, 100, 97,
			116, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 45, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 74, 83, 79, 78, 92, 66, 121, 116,
			101, 66, 117, 102, 102, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 47, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 74, 83, 79, 78, 92,
			67, 111, 110, 99, 114, 101, 116, 101, 67, 97,
			115, 116, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 49, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 67, 111, 110, 99, 114,
			101, 116, 101, 67, 97, 115, 116, 46, 103, 46,
			99, 115, 0, 0, 0, 4, 0, 0, 0, 45,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 74, 83, 79,
			78, 92, 69, 120, 99, 101, 112, 116, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 68, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 92, 65, 114, 114, 97,
			121, 83, 101, 103, 109, 101, 110, 116, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 60, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 74, 83, 79, 78,
			92, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 92, 66, 121, 116, 101, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 70, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 74, 83, 79, 78, 92, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 92,
			68, 97, 116, 101, 84, 105, 109, 101, 79, 102,
			102, 115, 101, 116, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 60, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 74, 83, 79, 78, 92, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 92, 69, 110,
			117, 109, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 62, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 92, 80, 97, 114, 115,
			101, 114, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 60, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 92, 84, 121, 112, 101,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			54, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 74, 83,
			79, 78, 92, 70, 111, 114, 109, 97, 116, 116,
			101, 114, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 54, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 73, 70, 105, 108, 101,
			83, 121, 115, 116, 101, 109, 65, 99, 99, 101,
			115, 115, 111, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 45, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 74, 83, 79, 78, 92, 73, 70, 111,
			114, 109, 97, 116, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 52, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 74, 83, 79, 78, 92,
			73, 83, 116, 111, 114, 101, 92, 66, 121, 116,
			101, 115, 83, 116, 111, 114, 101, 46, 99, 115,
			0, 0, 0, 4, 0, 0, 0, 51, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 74, 83, 79, 78, 92,
			73, 83, 116, 111, 114, 101, 92, 66, 121, 116,
			101, 85, 110, 105, 111, 110, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 48, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 74, 83, 79, 78, 92, 73,
			83, 116, 111, 114, 101, 92, 73, 83, 116, 111,
			114, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 53, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 73, 83, 116, 111, 114,
			101, 92, 83, 116, 114, 101, 97, 109, 83, 116,
			111, 114, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 60, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 74, 83, 79, 78, 92, 73, 83, 116, 111,
			114, 101, 92, 83, 116, 114, 105, 110, 103, 66,
			117, 105, 108, 100, 101, 114, 83, 116, 111, 114,
			101, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 53, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 74,
			83, 79, 78, 92, 74, 115, 111, 110, 92, 74,
			115, 111, 110, 70, 111, 114, 109, 97, 116, 116,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 50, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			74, 83, 79, 78, 92, 74, 115, 111, 110, 92,
			74, 115, 111, 110, 80, 97, 114, 115, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			50, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 74, 83,
			79, 78, 92, 74, 115, 111, 110, 92, 74, 115,
			111, 110, 83, 116, 114, 105, 110, 103, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 49, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 74, 83, 79, 78,
			92, 74, 115, 111, 110, 92, 74, 115, 111, 110,
			86, 97, 108, 117, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 60, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 74, 83, 79, 78, 92, 76, 105,
			115, 116, 84, 114, 101, 101, 78, 111, 100, 101,
			92, 76, 105, 115, 116, 84, 114, 101, 101, 78,
			111, 100, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 75, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 74, 83, 79, 78, 92, 76, 105, 115, 116,
			84, 114, 101, 101, 78, 111, 100, 101, 92, 76,
			105, 115, 116, 84, 114, 101, 101, 78, 111, 100,
			101, 65, 114, 114, 97, 121, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 70, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 74, 83, 79, 78, 92, 76,
			105, 115, 116, 84, 114, 101, 101, 78, 111, 100,
			101, 92, 76, 105, 115, 116, 84, 114, 101, 101,
			78, 111, 100, 101, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 76, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 74, 83, 79, 78, 92, 76, 105, 115,
			116, 84, 114, 101, 101, 78, 111, 100, 101, 92,
			76, 105, 115, 116, 84, 114, 101, 101, 78, 111,
			100, 101, 79, 98, 106, 101, 99, 116, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 57, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 74, 83, 79, 78,
			92, 85, 116, 102, 56, 83, 116, 114, 105, 110,
			103, 92, 73, 85, 116, 102, 56, 83, 116, 114,
			105, 110, 103, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 58, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 74, 83, 79, 78, 92, 85, 116, 102, 56,
			83, 116, 114, 105, 110, 103, 92, 85, 116, 102,
			56, 73, 116, 101, 114, 97, 116, 111, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 56,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 74, 83, 79,
			78, 92, 85, 116, 102, 56, 83, 116, 114, 105,
			110, 103, 92, 85, 116, 102, 56, 83, 116, 114,
			105, 110, 103, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 63, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 74, 83, 79, 78, 92, 85, 116, 102, 56,
			83, 116, 114, 105, 110, 103, 92, 85, 116, 102,
			56, 83, 116, 114, 105, 110, 103, 66, 117, 105,
			108, 100, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 66, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 74, 83, 79, 78, 92, 85, 116, 102,
			56, 83, 116, 114, 105, 110, 103, 92, 85, 116,
			102, 56, 83, 116, 114, 105, 110, 103, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 74, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 74, 83, 79, 78,
			92, 85, 116, 102, 56, 83, 116, 114, 105, 110,
			103, 92, 85, 116, 102, 56, 83, 116, 114, 105,
			110, 103, 83, 112, 108, 105, 116, 116, 101, 114,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 99, 115
		};
		result.TypesData = new byte[7970]
		{
			1, 0, 0, 0, 11, 85, 110, 105, 71, 76,
			84, 70, 124, 80, 105, 110, 1, 0, 0, 0,
			11, 85, 110, 105, 71, 76, 84, 70, 124, 80,
			105, 110, 0, 0, 0, 0, 23, 85, 110, 105,
			71, 76, 84, 70, 124, 65, 114, 114, 97, 121,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 30, 85, 110, 105, 71, 76,
			84, 70, 124, 65, 114, 114, 97, 121, 83, 101,
			103, 109, 101, 110, 116, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 33,
			85, 110, 105, 71, 76, 84, 70, 124, 67, 111,
			108, 111, 114, 67, 111, 110, 118, 101, 114, 115,
			105, 111, 110, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 0, 0, 0, 0, 22, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 84, 70,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 35, 85, 110, 105, 71, 76,
			84, 70, 46, 103, 108, 84, 70, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 124, 67, 111,
			109, 112, 111, 110, 101, 110, 116, 86, 101, 99,
			0, 0, 0, 0, 23, 85, 110, 105, 71, 76,
			84, 70, 124, 73, 110, 100, 101, 120, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 26, 85, 110, 105, 71, 76, 84, 70,
			124, 78, 117, 109, 101, 114, 105, 99, 115, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 24, 85, 110, 105, 71, 76, 84,
			70, 124, 83, 116, 114, 105, 110, 103, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 14, 85, 110, 105, 71, 76, 84, 70,
			124, 80, 111, 115, 82, 111, 116, 0, 0, 0,
			0, 18, 85, 110, 105, 71, 76, 84, 70, 124,
			66, 108, 101, 110, 100, 83, 104, 97, 112, 101,
			0, 0, 0, 0, 23, 85, 110, 105, 71, 76,
			84, 70, 124, 85, 110, 105, 116, 121, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 33, 85, 110, 105, 71, 76, 84, 70,
			46, 77, 101, 115, 104, 85, 116, 105, 108, 105,
			116, 121, 124, 66, 105, 110, 100, 112, 111, 115,
			101, 71, 105, 122, 109, 111, 0, 0, 0, 0,
			36, 85, 110, 105, 71, 76, 84, 70, 46, 77,
			101, 115, 104, 85, 116, 105, 108, 105, 116, 121,
			124, 66, 108, 101, 110, 100, 83, 104, 97, 112,
			101, 82, 101, 112, 111, 114, 116, 0, 0, 0,
			0, 51, 85, 110, 105, 71, 76, 84, 70, 46,
			77, 101, 115, 104, 85, 116, 105, 108, 105, 116,
			121, 46, 66, 108, 101, 110, 100, 83, 104, 97,
			112, 101, 82, 101, 112, 111, 114, 116, 124, 66,
			108, 101, 110, 100, 83, 104, 97, 112, 101, 83,
			116, 97, 116, 0, 0, 0, 0, 34, 85, 110,
			105, 71, 76, 84, 70, 46, 77, 101, 115, 104,
			85, 116, 105, 108, 105, 116, 121, 124, 66, 111,
			110, 101, 77, 101, 115, 104, 69, 114, 97, 115,
			101, 114, 0, 0, 0, 0, 51, 85, 110, 105,
			71, 76, 84, 70, 46, 77, 101, 115, 104, 85,
			116, 105, 108, 105, 116, 121, 46, 66, 111, 110,
			101, 77, 101, 115, 104, 69, 114, 97, 115, 101,
			114, 124, 69, 120, 99, 108, 117, 100, 101, 66,
			111, 110, 101, 73, 110, 100, 101, 120, 0, 0,
			0, 0, 44, 85, 110, 105, 71, 76, 84, 70,
			46, 77, 101, 115, 104, 85, 116, 105, 108, 105,
			116, 121, 46, 66, 111, 110, 101, 77, 101, 115,
			104, 69, 114, 97, 115, 101, 114, 124, 69, 114,
			97, 115, 101, 66, 111, 110, 101, 0, 0, 0,
			0, 34, 85, 110, 105, 71, 76, 84, 70, 46,
			77, 101, 115, 104, 85, 116, 105, 108, 105, 116,
			121, 124, 66, 111, 110, 101, 78, 111, 114, 109,
			97, 108, 105, 122, 101, 114, 0, 0, 0, 0,
			35, 85, 110, 105, 71, 76, 84, 70, 46, 77,
			101, 115, 104, 85, 116, 105, 108, 105, 116, 121,
			124, 71, 108, 116, 102, 77, 101, 115, 104, 85,
			116, 105, 108, 105, 116, 121, 0, 0, 0, 0,
			34, 85, 110, 105, 71, 76, 84, 70, 46, 77,
			101, 115, 104, 85, 116, 105, 108, 105, 116, 121,
			124, 77, 101, 115, 104, 65, 116, 116, 97, 99,
			104, 73, 110, 102, 111, 0, 0, 0, 0, 31,
			85, 110, 105, 71, 76, 84, 70, 46, 77, 101,
			115, 104, 85, 116, 105, 108, 105, 116, 121, 124,
			77, 101, 115, 104, 69, 120, 99, 108, 117, 100,
			101, 0, 0, 0, 0, 34, 85, 110, 105, 71,
			76, 84, 70, 46, 77, 101, 115, 104, 85, 116,
			105, 108, 105, 116, 121, 124, 77, 101, 115, 104,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 31, 85, 110, 105, 71, 76,
			84, 70, 46, 77, 101, 115, 104, 85, 116, 105,
			108, 105, 116, 121, 124, 77, 101, 115, 104, 70,
			114, 101, 101, 122, 101, 114, 0, 0, 0, 0,
			40, 85, 110, 105, 71, 76, 84, 70, 46, 77,
			101, 115, 104, 85, 116, 105, 108, 105, 116, 121,
			124, 77, 101, 115, 104, 73, 110, 116, 101, 103,
			114, 97, 116, 105, 111, 110, 71, 114, 111, 117,
			112, 0, 0, 0, 0, 29, 85, 110, 105, 71,
			76, 84, 70, 46, 77, 101, 115, 104, 85, 116,
			105, 108, 105, 116, 121, 124, 68, 114, 97, 119,
			67, 111, 117, 110, 116, 0, 0, 0, 0, 28,
			85, 110, 105, 71, 76, 84, 70, 46, 77, 101,
			115, 104, 85, 116, 105, 108, 105, 116, 121, 124,
			77, 101, 115, 104, 73, 110, 102, 111, 0, 0,
			0, 0, 41, 85, 110, 105, 71, 76, 84, 70,
			46, 77, 101, 115, 104, 85, 116, 105, 108, 105,
			116, 121, 124, 77, 101, 115, 104, 73, 110, 116,
			101, 103, 114, 97, 116, 105, 111, 110, 82, 101,
			115, 117, 108, 116, 0, 0, 0, 0, 34, 85,
			110, 105, 71, 76, 84, 70, 46, 77, 101, 115,
			104, 85, 116, 105, 108, 105, 116, 121, 124, 77,
			101, 115, 104, 73, 110, 116, 101, 103, 114, 97,
			116, 111, 114, 0, 0, 0, 0, 42, 85, 110,
			105, 71, 76, 84, 70, 46, 77, 101, 115, 104,
			85, 116, 105, 108, 105, 116, 121, 46, 77, 101,
			115, 104, 73, 110, 116, 101, 103, 114, 97, 116,
			111, 114, 124, 83, 117, 98, 77, 101, 115, 104,
			0, 0, 0, 0, 45, 85, 110, 105, 71, 76,
			84, 70, 46, 77, 101, 115, 104, 85, 116, 105,
			108, 105, 116, 121, 46, 77, 101, 115, 104, 73,
			110, 116, 101, 103, 114, 97, 116, 111, 114, 124,
			66, 108, 101, 110, 100, 83, 104, 97, 112, 101,
			0, 0, 0, 0, 37, 85, 110, 105, 71, 76,
			84, 70, 46, 77, 101, 115, 104, 85, 116, 105,
			108, 105, 116, 121, 124, 84, 114, 105, 97, 110,
			103, 108, 101, 83, 101, 112, 97, 114, 97, 116,
			111, 114, 0, 0, 0, 0, 73, 85, 110, 105,
			71, 76, 84, 70, 46, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 86, 82, 77, 67,
			95, 109, 97, 116, 101, 114, 105, 97, 108, 115,
			95, 104, 100, 114, 95, 101, 109, 105, 115, 115,
			105, 118, 101, 77, 117, 108, 116, 105, 112, 108,
			105, 101, 114, 124, 71, 108, 116, 102, 68, 101,
			115, 101, 114, 105, 97, 108, 105, 122, 101, 114,
			0, 0, 0, 0, 94, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 109,
			97, 116, 101, 114, 105, 97, 108, 115, 95, 104,
			100, 114, 95, 101, 109, 105, 115, 115, 105, 118,
			101, 77, 117, 108, 116, 105, 112, 108, 105, 101,
			114, 124, 86, 82, 77, 67, 95, 109, 97, 116,
			101, 114, 105, 97, 108, 115, 95, 104, 100, 114,
			95, 101, 109, 105, 115, 115, 105, 118, 101, 77,
			117, 108, 116, 105, 112, 108, 105, 101, 114, 0,
			0, 0, 0, 71, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 109, 97,
			116, 101, 114, 105, 97, 108, 115, 95, 104, 100,
			114, 95, 101, 109, 105, 115, 115, 105, 118, 101,
			77, 117, 108, 116, 105, 112, 108, 105, 101, 114,
			124, 71, 108, 116, 102, 83, 101, 114, 105, 97,
			108, 105, 122, 101, 114, 0, 0, 0, 0, 21,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 0, 0, 0, 0, 27, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 84, 70, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 69, 120, 112,
			111, 114, 116, 0, 0, 0, 0, 27, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 84, 70,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 73,
			109, 112, 111, 114, 116, 0, 0, 0, 0, 40,
			85, 110, 105, 71, 76, 84, 70, 124, 71, 108,
			116, 102, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 70, 111, 114, 109, 97, 116, 116, 101, 114,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 36, 85, 110, 105, 71, 76,
			84, 70, 124, 103, 108, 116, 102, 95, 109, 101,
			115, 104, 95, 101, 120, 116, 114, 97, 115, 95,
			116, 97, 114, 103, 101, 116, 78, 97, 109, 101,
			115, 0, 0, 0, 0, 44, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 84, 70, 95, 75,
			72, 82, 95, 109, 97, 116, 101, 114, 105, 97,
			108, 115, 95, 101, 109, 105, 115, 115, 105, 118,
			101, 95, 115, 116, 114, 101, 110, 103, 116, 104,
			0, 0, 0, 0, 32, 85, 110, 105, 71, 76,
			84, 70, 124, 103, 108, 84, 70, 95, 75, 72,
			82, 95, 109, 97, 116, 101, 114, 105, 97, 108,
			115, 95, 117, 110, 108, 105, 116, 0, 0, 0,
			0, 31, 85, 110, 105, 71, 76, 84, 70, 124,
			103, 108, 84, 70, 95, 75, 72, 82, 95, 116,
			101, 120, 116, 117, 114, 101, 95, 98, 97, 115,
			105, 115, 117, 0, 0, 0, 0, 34, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 84, 70,
			95, 75, 72, 82, 95, 116, 101, 120, 116, 117,
			114, 101, 95, 116, 114, 97, 110, 115, 102, 111,
			114, 109, 0, 0, 0, 0, 17, 85, 110, 105,
			71, 76, 84, 70, 124, 71, 108, 98, 72, 101,
			97, 100, 101, 114, 0, 0, 0, 0, 16, 85,
			110, 105, 71, 76, 84, 70, 124, 71, 108, 98,
			67, 104, 117, 110, 107, 0, 0, 0, 0, 11,
			85, 110, 105, 71, 76, 84, 70, 124, 71, 108,
			98, 0, 0, 0, 0, 33, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 67, 111, 109, 112,
			111, 110, 101, 110, 116, 84, 121, 112, 101, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 17, 85, 110, 105, 71, 76, 84,
			70, 124, 103, 108, 116, 102, 83, 99, 101, 110,
			101, 0, 0, 0, 0, 12, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 84, 70, 0, 0,
			0, 0, 27, 85, 110, 105, 71, 76, 84, 70,
			124, 103, 108, 84, 70, 65, 110, 105, 109, 97,
			116, 105, 111, 110, 84, 97, 114, 103, 101, 116,
			0, 0, 0, 0, 28, 85, 110, 105, 71, 76,
			84, 70, 124, 103, 108, 84, 70, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 67, 104, 97, 110,
			110, 101, 108, 0, 0, 0, 0, 28, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 84, 70,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 83,
			97, 109, 112, 108, 101, 114, 0, 0, 0, 0,
			21, 85, 110, 105, 71, 76, 84, 70, 124, 103,
			108, 84, 70, 65, 110, 105, 109, 97, 116, 105,
			111, 110, 0, 0, 0, 0, 18, 85, 110, 105,
			71, 76, 84, 70, 124, 103, 108, 84, 70, 65,
			115, 115, 101, 116, 115, 0, 0, 0, 0, 18,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 66, 117, 102, 102, 101, 114, 0, 0,
			0, 0, 22, 85, 110, 105, 71, 76, 84, 70,
			124, 103, 108, 84, 70, 66, 117, 102, 102, 101,
			114, 86, 105, 101, 119, 0, 0, 0, 0, 25,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 83, 112, 97, 114, 115, 101, 73, 110,
			100, 105, 99, 101, 115, 0, 0, 0, 0, 24,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 83, 112, 97, 114, 115, 101, 86, 97,
			108, 117, 101, 115, 0, 0, 0, 0, 18, 85,
			110, 105, 71, 76, 84, 70, 124, 103, 108, 84,
			70, 83, 112, 97, 114, 115, 101, 0, 0, 0,
			0, 20, 85, 110, 105, 71, 76, 84, 70, 124,
			103, 108, 84, 70, 65, 99, 99, 101, 115, 115,
			111, 114, 0, 0, 0, 0, 24, 85, 110, 105,
			71, 76, 84, 70, 124, 103, 108, 84, 70, 79,
			114, 116, 104, 111, 103, 114, 97, 112, 104, 105,
			99, 0, 0, 0, 0, 23, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 84, 70, 80, 101,
			114, 115, 112, 101, 99, 116, 105, 118, 101, 0,
			0, 0, 0, 18, 85, 110, 105, 71, 76, 84,
			70, 124, 103, 108, 84, 70, 67, 97, 109, 101,
			114, 97, 0, 0, 0, 0, 24, 85, 110, 105,
			71, 76, 84, 70, 124, 71, 108, 116, 102, 68,
			101, 115, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 0, 0, 0, 0, 23, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 84, 70, 84, 101,
			120, 116, 117, 114, 101, 73, 110, 102, 111, 0,
			0, 0, 0, 40, 85, 110, 105, 71, 76, 84,
			70, 124, 103, 108, 84, 70, 77, 97, 116, 101,
			114, 105, 97, 108, 66, 97, 115, 101, 67, 111,
			108, 111, 114, 84, 101, 120, 116, 117, 114, 101,
			73, 110, 102, 111, 0, 0, 0, 0, 48, 85,
			110, 105, 71, 76, 84, 70, 124, 103, 108, 84,
			70, 77, 97, 116, 101, 114, 105, 97, 108, 77,
			101, 116, 97, 108, 108, 105, 99, 82, 111, 117,
			103, 104, 110, 101, 115, 115, 84, 101, 120, 116,
			117, 114, 101, 73, 110, 102, 111, 0, 0, 0,
			0, 37, 85, 110, 105, 71, 76, 84, 70, 124,
			103, 108, 84, 70, 77, 97, 116, 101, 114, 105,
			97, 108, 78, 111, 114, 109, 97, 108, 84, 101,
			120, 116, 117, 114, 101, 73, 110, 102, 111, 0,
			0, 0, 0, 40, 85, 110, 105, 71, 76, 84,
			70, 124, 103, 108, 84, 70, 77, 97, 116, 101,
			114, 105, 97, 108, 79, 99, 99, 108, 117, 115,
			105, 111, 110, 84, 101, 120, 116, 117, 114, 101,
			73, 110, 102, 111, 0, 0, 0, 0, 39, 85,
			110, 105, 71, 76, 84, 70, 124, 103, 108, 84,
			70, 77, 97, 116, 101, 114, 105, 97, 108, 69,
			109, 105, 115, 115, 105, 118, 101, 84, 101, 120,
			116, 117, 114, 101, 73, 110, 102, 111, 0, 0,
			0, 0, 32, 85, 110, 105, 71, 76, 84, 70,
			124, 103, 108, 84, 70, 80, 98, 114, 77, 101,
			116, 97, 108, 108, 105, 99, 82, 111, 117, 103,
			104, 110, 101, 115, 115, 0, 0, 0, 0, 20,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 77, 97, 116, 101, 114, 105, 97, 108,
			0, 0, 0, 0, 22, 85, 110, 105, 71, 76,
			84, 70, 124, 103, 108, 84, 70, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 115, 0, 0, 0,
			0, 23, 85, 110, 105, 71, 76, 84, 70, 124,
			103, 108, 116, 102, 77, 111, 114, 112, 104, 84,
			97, 114, 103, 101, 116, 0, 0, 0, 0, 22,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 80, 114, 105, 109, 105, 116, 105, 118,
			101, 115, 0, 0, 0, 0, 16, 85, 110, 105,
			71, 76, 84, 70, 124, 103, 108, 84, 70, 77,
			101, 115, 104, 0, 0, 0, 0, 16, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 84, 70,
			78, 111, 100, 101, 0, 0, 0, 0, 22, 85,
			110, 105, 71, 76, 84, 70, 124, 71, 108, 116,
			102, 83, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 0, 0, 0, 0, 16, 85, 110, 105, 71,
			76, 84, 70, 124, 103, 108, 84, 70, 83, 107,
			105, 110, 0, 0, 0, 0, 26, 85, 110, 105,
			71, 76, 84, 70, 124, 103, 108, 84, 70, 84,
			101, 120, 116, 117, 114, 101, 83, 97, 109, 112,
			108, 101, 114, 0, 0, 0, 0, 17, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 84, 70,
			73, 109, 97, 103, 101, 0, 0, 0, 0, 19,
			85, 110, 105, 71, 76, 84, 70, 124, 103, 108,
			84, 70, 84, 101, 120, 116, 117, 114, 101, 0,
			0, 0, 0, 16, 85, 110, 105, 71, 76, 84,
			70, 124, 73, 83, 116, 111, 114, 97, 103, 101,
			0, 0, 0, 0, 31, 85, 110, 105, 71, 76,
			84, 70, 124, 66, 97, 115, 101, 74, 115, 111,
			110, 83, 99, 104, 101, 109, 97, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 0, 0, 0, 0,
			27, 85, 110, 105, 71, 76, 84, 70, 124, 74,
			115, 111, 110, 83, 99, 104, 101, 109, 97, 65,
			116, 116, 114, 105, 98, 117, 116, 101, 0, 0,
			0, 0, 31, 85, 110, 105, 71, 76, 84, 70,
			124, 73, 116, 101, 109, 74, 115, 111, 110, 83,
			99, 104, 101, 109, 97, 65, 116, 116, 114, 105,
			98, 117, 116, 101, 0, 0, 0, 0, 29, 85,
			110, 105, 71, 76, 84, 70, 124, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 73, 109, 112, 111,
			114, 116, 101, 114, 85, 116, 105, 108, 0, 0,
			0, 0, 26, 85, 110, 105, 71, 76, 84, 70,
			124, 73, 65, 110, 105, 109, 97, 116, 105, 111,
			110, 69, 120, 112, 111, 114, 116, 101, 114, 0,
			0, 0, 0, 23, 85, 110, 105, 71, 76, 84,
			70, 124, 65, 114, 114, 97, 121, 66, 121, 116,
			101, 66, 117, 102, 102, 101, 114, 1, 0, 0,
			0, 16, 85, 110, 105, 71, 76, 84, 70, 124,
			65, 114, 114, 97, 121, 80, 105, 110, 1, 0,
			0, 0, 16, 85, 110, 105, 71, 76, 84, 70,
			124, 65, 114, 114, 97, 121, 80, 105, 110, 0,
			0, 0, 0, 26, 85, 110, 105, 71, 76, 84,
			70, 124, 65, 114, 114, 97, 121, 80, 105, 110,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 21, 85, 110, 105, 71, 76,
			84, 70, 124, 73, 65, 120, 105, 115, 73, 110,
			118, 101, 114, 116, 101, 114, 0, 0, 0, 0,
			16, 85, 110, 105, 71, 76, 84, 70, 124, 82,
			101, 118, 101, 114, 115, 101, 90, 0, 0, 0,
			0, 16, 85, 110, 105, 71, 76, 84, 70, 124,
			82, 101, 118, 101, 114, 115, 101, 88, 0, 0,
			0, 0, 24, 85, 110, 105, 71, 76, 84, 70,
			124, 65, 120, 105, 115, 101, 115, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 0, 0, 0,
			0, 34, 85, 110, 105, 71, 76, 84, 70, 124,
			71, 108, 116, 102, 65, 99, 99, 101, 115, 115,
			111, 114, 84, 121, 112, 101, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			35, 85, 110, 105, 71, 76, 84, 70, 124, 71,
			108, 116, 102, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 84, 121, 112, 101, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			22, 85, 110, 105, 71, 76, 84, 70, 124, 66,
			117, 102, 102, 101, 114, 65, 99, 99, 101, 115,
			115, 111, 114, 0, 0, 0, 0, 13, 85, 110,
			105, 71, 76, 84, 70, 124, 66, 121, 116, 101,
			51, 0, 0, 0, 0, 13, 85, 110, 105, 71,
			76, 84, 70, 124, 66, 121, 116, 101, 52, 0,
			0, 0, 0, 19, 85, 110, 105, 71, 76, 84,
			70, 124, 66, 121, 116, 101, 115, 82, 101, 97,
			100, 101, 114, 0, 0, 0, 0, 25, 85, 110,
			105, 71, 76, 84, 70, 124, 69, 120, 112, 111,
			114, 116, 105, 110, 103, 71, 108, 116, 102, 68,
			97, 116, 97, 0, 0, 0, 0, 25, 85, 110,
			105, 71, 76, 84, 70, 124, 70, 105, 108, 101,
			83, 121, 115, 116, 101, 109, 83, 116, 111, 114,
			97, 103, 101, 0, 0, 0, 0, 19, 85, 110,
			105, 71, 76, 84, 70, 124, 103, 108, 98, 73,
			109, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 16, 85, 110, 105, 71, 76, 84, 70, 124,
			71, 108, 116, 102, 68, 97, 116, 97, 0, 0,
			0, 0, 20, 85, 110, 105, 71, 76, 84, 70,
			124, 103, 108, 116, 102, 69, 120, 112, 111, 114,
			116, 101, 114, 0, 0, 0, 0, 26, 85, 110,
			105, 71, 76, 84, 70, 124, 71, 108, 116, 102,
			69, 120, 112, 111, 114, 116, 83, 101, 116, 116,
			105, 110, 103, 115, 0, 0, 0, 0, 20, 85,
			110, 105, 71, 76, 84, 70, 124, 71, 108, 116,
			102, 74, 115, 111, 110, 85, 116, 105, 108, 0,
			0, 0, 0, 19, 85, 110, 105, 71, 76, 84,
			70, 124, 71, 108, 116, 102, 85, 116, 105, 108,
			105, 116, 121, 0, 0, 0, 0, 23, 85, 110,
			105, 71, 76, 84, 70, 124, 73, 109, 112, 111,
			114, 116, 101, 114, 67, 111, 110, 116, 101, 120,
			116, 0, 0, 0, 0, 33, 85, 110, 105, 71,
			76, 84, 70, 124, 73, 109, 112, 111, 114, 116,
			101, 114, 67, 111, 110, 116, 101, 120, 116, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 31, 85, 110, 105, 71, 76, 84,
			70, 124, 73, 109, 112, 111, 114, 116, 101, 114,
			67, 111, 110, 116, 101, 120, 116, 83, 112, 101,
			101, 100, 76, 111, 103, 0, 0, 0, 0, 42,
			85, 110, 105, 71, 76, 84, 70, 46, 73, 109,
			112, 111, 114, 116, 101, 114, 67, 111, 110, 116,
			101, 120, 116, 83, 112, 101, 101, 100, 76, 111,
			103, 124, 75, 101, 121, 69, 108, 97, 112, 115,
			101, 100, 0, 0, 0, 0, 44, 85, 110, 105,
			71, 76, 84, 70, 46, 73, 109, 112, 111, 114,
			116, 101, 114, 67, 111, 110, 116, 101, 120, 116,
			83, 112, 101, 101, 100, 76, 111, 103, 124, 77,
			101, 97, 115, 117, 114, 101, 83, 99, 111, 112,
			101, 0, 0, 0, 0, 35, 85, 110, 105, 71,
			76, 84, 70, 124, 66, 117, 105, 108, 116, 73,
			110, 71, 108, 116, 102, 77, 97, 116, 101, 114,
			105, 97, 108, 69, 120, 112, 111, 114, 116, 101,
			114, 0, 0, 0, 0, 39, 85, 110, 105, 71,
			76, 84, 70, 124, 66, 117, 105, 108, 116, 73,
			110, 70, 97, 108, 108, 98, 97, 99, 107, 77,
			97, 116, 101, 114, 105, 97, 108, 69, 120, 112,
			111, 114, 116, 101, 114, 0, 0, 0, 0, 43,
			85, 110, 105, 71, 76, 84, 70, 124, 66, 117,
			105, 108, 116, 73, 110, 71, 101, 110, 101, 114,
			105, 99, 85, 110, 108, 105, 116, 77, 97, 116,
			101, 114, 105, 97, 108, 69, 120, 112, 111, 114,
			116, 101, 114, 0, 0, 0, 0, 39, 85, 110,
			105, 71, 76, 84, 70, 124, 66, 117, 105, 108,
			116, 73, 110, 83, 116, 97, 110, 100, 97, 114,
			100, 77, 97, 116, 101, 114, 105, 97, 108, 69,
			120, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 39, 85, 110, 105, 71, 76, 84, 70, 124,
			66, 117, 105, 108, 116, 73, 110, 85, 110, 105,
			85, 110, 108, 105, 116, 77, 97, 116, 101, 114,
			105, 97, 108, 69, 120, 112, 111, 114, 116, 101,
			114, 0, 0, 0, 0, 46, 85, 110, 105, 71,
			76, 84, 70, 124, 66, 117, 105, 108, 116, 73,
			110, 71, 108, 116, 102, 77, 97, 116, 101, 114,
			105, 97, 108, 68, 101, 115, 99, 114, 105, 112,
			116, 111, 114, 71, 101, 110, 101, 114, 97, 116,
			111, 114, 0, 0, 0, 0, 42, 85, 110, 105,
			71, 76, 84, 70, 124, 66, 117, 105, 108, 116,
			73, 110, 71, 108, 116, 102, 68, 101, 102, 97,
			117, 108, 116, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 109, 112, 111, 114, 116, 101, 114, 0,
			0, 0, 0, 38, 85, 110, 105, 71, 76, 84,
			70, 124, 66, 117, 105, 108, 116, 73, 110, 71,
			108, 116, 102, 80, 98, 114, 77, 97, 116, 101,
			114, 105, 97, 108, 73, 109, 112, 111, 114, 116,
			101, 114, 0, 0, 0, 0, 40, 85, 110, 105,
			71, 76, 84, 70, 124, 66, 117, 105, 108, 116,
			73, 110, 71, 108, 116, 102, 85, 110, 108, 105,
			116, 77, 97, 116, 101, 114, 105, 97, 108, 73,
			109, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 31, 85, 110, 105, 71, 76, 84, 70, 124,
			71, 108, 116, 102, 77, 97, 116, 101, 114, 105,
			97, 108, 69, 120, 112, 111, 114, 116, 85, 116,
			105, 108, 115, 0, 0, 0, 0, 31, 85, 110,
			105, 71, 76, 84, 70, 124, 71, 108, 116, 102,
			77, 97, 116, 101, 114, 105, 97, 108, 73, 109,
			112, 111, 114, 116, 85, 116, 105, 108, 115, 0,
			0, 0, 0, 36, 85, 110, 105, 71, 76, 84,
			70, 124, 73, 77, 97, 116, 101, 114, 105, 97,
			108, 68, 101, 115, 99, 114, 105, 112, 116, 111,
			114, 71, 101, 110, 101, 114, 97, 116, 111, 114,
			0, 0, 0, 0, 25, 85, 110, 105, 71, 76,
			84, 70, 124, 73, 77, 97, 116, 101, 114, 105,
			97, 108, 69, 120, 112, 111, 114, 116, 101, 114,
			0, 0, 0, 0, 39, 85, 110, 105, 71, 76,
			84, 70, 124, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 109, 112, 111, 114, 116, 101, 114, 80,
			97, 114, 97, 109, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 0, 0, 0, 0, 49, 124,
			82, 101, 110, 100, 101, 114, 80, 105, 112, 101,
			108, 105, 110, 101, 77, 97, 116, 101, 114, 105,
			97, 108, 68, 101, 115, 99, 114, 105, 112, 116,
			111, 114, 71, 101, 110, 101, 114, 97, 116, 111,
			114, 85, 116, 105, 108, 105, 116, 121, 0, 0,
			0, 0, 24, 85, 110, 105, 71, 76, 84, 70,
			124, 84, 101, 120, 116, 117, 114, 101, 84, 114,
			97, 110, 115, 102, 111, 114, 109, 0, 0, 0,
			0, 38, 85, 110, 105, 71, 76, 84, 70, 124,
			85, 114, 112, 71, 108, 116, 102, 68, 101, 102,
			97, 117, 108, 116, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 109, 112, 111, 114, 116, 101, 114,
			0, 0, 0, 0, 34, 85, 110, 105, 71, 76,
			84, 70, 124, 85, 114, 112, 71, 108, 116, 102,
			80, 98, 114, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 109, 112, 111, 114, 116, 101, 114, 0,
			0, 0, 0, 42, 85, 110, 105, 71, 76, 84,
			70, 124, 85, 114, 112, 71, 108, 116, 102, 77,
			97, 116, 101, 114, 105, 97, 108, 68, 101, 115,
			99, 114, 105, 112, 116, 111, 114, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 0, 0, 0, 0,
			26, 85, 110, 105, 71, 76, 84, 70, 124, 66,
			108, 101, 110, 100, 83, 104, 97, 112, 101, 69,
			120, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 31, 85, 110, 105, 71, 76, 84, 70, 124,
			73, 66, 108, 101, 110, 100, 83, 104, 97, 112,
			101, 69, 120, 112, 111, 114, 116, 70, 105, 108,
			116, 101, 114, 0, 0, 0, 0, 37, 85, 110,
			105, 71, 76, 84, 70, 124, 68, 101, 102, 117,
			97, 108, 116, 66, 108, 101, 110, 100, 83, 104,
			97, 112, 101, 69, 120, 112, 111, 114, 116, 70,
			105, 108, 116, 101, 114, 0, 0, 0, 0, 22,
			85, 110, 105, 71, 76, 84, 70, 124, 74, 111,
			105, 110, 116, 115, 65, 99, 99, 101, 115, 115,
			111, 114, 0, 0, 0, 0, 16, 85, 110, 105,
			71, 76, 84, 70, 124, 77, 101, 115, 104, 68,
			97, 116, 97, 0, 0, 0, 0, 40, 85, 110,
			105, 71, 76, 84, 70, 124, 77, 101, 115, 104,
			69, 120, 112, 111, 114, 116, 101, 114, 95, 68,
			105, 118, 105, 100, 101, 100, 86, 101, 114, 116,
			101, 120, 66, 117, 102, 102, 101, 114, 0, 0,
			0, 0, 39, 85, 110, 105, 71, 76, 84, 70,
			124, 77, 101, 115, 104, 69, 120, 112, 111, 114,
			116, 101, 114, 95, 83, 104, 97, 114, 101, 100,
			86, 101, 114, 116, 101, 120, 66, 117, 102, 102,
			101, 114, 0, 0, 0, 0, 22, 85, 110, 105,
			71, 76, 84, 70, 124, 77, 101, 115, 104, 69,
			120, 112, 111, 114, 116, 73, 110, 102, 111, 0,
			0, 0, 0, 22, 85, 110, 105, 71, 76, 84,
			70, 124, 77, 101, 115, 104, 69, 120, 112, 111,
			114, 116, 76, 105, 115, 116, 0, 0, 0, 0,
			22, 85, 110, 105, 71, 76, 84, 70, 124, 77,
			101, 115, 104, 69, 120, 112, 111, 114, 116, 85,
			116, 105, 108, 0, 0, 0, 0, 39, 85, 110,
			105, 71, 76, 84, 70, 46, 77, 101, 115, 104,
			69, 120, 112, 111, 114, 116, 85, 116, 105, 108,
			124, 66, 108, 101, 110, 100, 83, 104, 97, 112,
			101, 66, 117, 102, 102, 101, 114, 0, 0, 0,
			0, 35, 85, 110, 105, 71, 76, 84, 70, 46,
			77, 101, 115, 104, 69, 120, 112, 111, 114, 116,
			85, 116, 105, 108, 124, 86, 101, 114, 116, 101,
			120, 66, 117, 102, 102, 101, 114, 0, 0, 0,
			0, 20, 85, 110, 105, 71, 76, 84, 70, 124,
			77, 101, 115, 104, 85, 112, 108, 111, 97, 100,
			101, 114, 0, 0, 0, 0, 19, 85, 110, 105,
			71, 76, 84, 70, 124, 77, 101, 115, 104, 86,
			101, 114, 116, 101, 120, 48, 0, 0, 0, 0,
			19, 85, 110, 105, 71, 76, 84, 70, 124, 77,
			101, 115, 104, 86, 101, 114, 116, 101, 120, 49,
			0, 0, 0, 0, 19, 85, 110, 105, 71, 76,
			84, 70, 124, 77, 101, 115, 104, 86, 101, 114,
			116, 101, 120, 50, 0, 0, 0, 0, 25, 85,
			110, 105, 71, 76, 84, 70, 124, 77, 101, 115,
			104, 86, 101, 114, 116, 101, 120, 85, 116, 105,
			108, 105, 116, 121, 0, 0, 0, 0, 25, 85,
			110, 105, 71, 76, 84, 70, 124, 77, 101, 115,
			104, 87, 105, 116, 104, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 0, 0, 0, 0, 23, 85,
			110, 105, 71, 76, 84, 70, 124, 65, 99, 99,
			101, 115, 115, 111, 114, 115, 66, 111, 117, 110,
			100, 115, 0, 0, 0, 0, 27, 85, 110, 105,
			71, 76, 84, 70, 124, 80, 114, 105, 109, 105,
			116, 105, 118, 101, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 0, 0, 0, 0, 20, 85,
			110, 105, 71, 76, 84, 70, 124, 83, 107, 105,
			110, 110, 105, 110, 103, 73, 110, 102, 111, 0,
			0, 0, 0, 13, 124, 84, 114, 105, 97, 110,
			103, 108, 101, 85, 116, 105, 108, 0, 0, 0,
			0, 26, 85, 110, 105, 71, 76, 84, 70, 124,
			86, 101, 114, 116, 101, 120, 67, 111, 108, 111,
			114, 85, 116, 105, 108, 105, 116, 121, 0, 0,
			0, 0, 23, 85, 110, 105, 71, 76, 84, 70,
			124, 87, 101, 105, 103, 104, 116, 115, 65, 99,
			99, 101, 115, 115, 111, 114, 0, 0, 0, 0,
			22, 85, 110, 105, 71, 76, 84, 70, 124, 77,
			105, 103, 114, 97, 116, 105, 111, 110, 70, 108,
			97, 103, 115, 0, 0, 0, 0, 31, 85, 110,
			105, 71, 76, 84, 70, 124, 77, 111, 110, 111,
			66, 101, 104, 97, 118, 105, 111, 117, 114, 67,
			111, 109, 112, 97, 114, 97, 116, 111, 114, 0,
			0, 0, 0, 27, 85, 110, 105, 71, 76, 84,
			70, 124, 73, 78, 97, 116, 105, 118, 101, 65,
			114, 114, 97, 121, 77, 97, 110, 97, 103, 101,
			114, 0, 0, 0, 0, 26, 85, 110, 105, 71,
			76, 84, 70, 124, 78, 97, 116, 105, 118, 101,
			65, 114, 114, 97, 121, 77, 97, 110, 97, 103,
			101, 114, 0, 0, 0, 0, 20, 85, 110, 105,
			71, 76, 84, 70, 124, 78, 111, 100, 101, 73,
			109, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 38, 85, 110, 105, 71, 76, 84, 70, 46,
			78, 111, 100, 101, 73, 109, 112, 111, 114, 116,
			101, 114, 124, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 87, 105, 116, 104, 83, 107, 105, 110,
			0, 0, 0, 0, 26, 85, 110, 105, 71, 76,
			84, 70, 124, 65, 117, 116, 111, 71, 108, 116,
			102, 70, 105, 108, 101, 80, 97, 114, 115, 101,
			114, 0, 0, 0, 0, 23, 85, 110, 105, 71,
			76, 84, 70, 124, 71, 108, 98, 66, 105, 110,
			97, 114, 121, 80, 97, 114, 115, 101, 114, 0,
			0, 0, 0, 21, 85, 110, 105, 71, 76, 84,
			70, 124, 71, 108, 98, 70, 105, 108, 101, 80,
			97, 114, 115, 101, 114, 0, 0, 0, 0, 25,
			85, 110, 105, 71, 76, 84, 70, 124, 71, 108,
			98, 76, 111, 119, 76, 101, 118, 101, 108, 80,
			97, 114, 115, 101, 114, 0, 0, 0, 0, 39,
			85, 110, 105, 71, 76, 84, 70, 124, 71, 108,
			116, 102, 70, 105, 108, 101, 87, 105, 116, 104,
			82, 101, 115, 111, 117, 114, 99, 101, 70, 105,
			108, 101, 115, 80, 97, 114, 115, 101, 114, 0,
			0, 0, 0, 33, 85, 110, 105, 71, 76, 84,
			70, 124, 90, 105, 112, 65, 114, 99, 104, 105,
			118, 101, 100, 71, 108, 116, 102, 70, 105, 108,
			101, 80, 97, 114, 115, 101, 114, 0, 0, 0,
			0, 22, 85, 110, 105, 71, 76, 84, 70, 124,
			69, 120, 112, 111, 114, 116, 80, 114, 111, 103,
			114, 101, 115, 115, 0, 0, 0, 0, 20, 85,
			110, 105, 71, 76, 84, 70, 124, 78, 117, 108,
			108, 80, 114, 111, 103, 114, 101, 115, 115, 0,
			0, 0, 0, 23, 85, 110, 105, 71, 76, 84,
			70, 124, 83, 97, 102, 101, 77, 97, 114, 115,
			104, 97, 108, 67, 111, 112, 121, 0, 0, 0,
			0, 14, 85, 110, 105, 71, 76, 84, 70, 124,
			83, 66, 121, 116, 101, 52, 0, 0, 0, 0,
			18, 85, 110, 105, 71, 76, 84, 70, 124, 83,
			107, 105, 110, 74, 111, 105, 110, 116, 115, 0,
			0, 0, 0, 30, 85, 110, 105, 71, 76, 84,
			70, 124, 71, 108, 116, 102, 80, 98, 114, 84,
			101, 120, 116, 117, 114, 101, 73, 109, 112, 111,
			114, 116, 101, 114, 0, 0, 0, 0, 38, 85,
			110, 105, 71, 76, 84, 70, 124, 71, 108, 116,
			102, 84, 101, 120, 116, 117, 114, 101, 68, 101,
			115, 99, 114, 105, 112, 116, 111, 114, 71, 101,
			110, 101, 114, 97, 116, 111, 114, 0, 0, 0,
			0, 27, 85, 110, 105, 71, 76, 84, 70, 124,
			71, 108, 116, 102, 84, 101, 120, 116, 117, 114,
			101, 69, 120, 112, 111, 114, 116, 101, 114, 0,
			0, 0, 0, 27, 85, 110, 105, 71, 76, 84,
			70, 124, 71, 108, 116, 102, 84, 101, 120, 116,
			117, 114, 101, 73, 109, 112, 111, 114, 116, 101,
			114, 0, 0, 0, 0, 35, 85, 110, 105, 71,
			76, 84, 70, 124, 73, 84, 101, 120, 116, 117,
			114, 101, 68, 101, 115, 99, 114, 105, 112, 116,
			111, 114, 71, 101, 110, 101, 114, 97, 116, 111,
			114, 0, 0, 0, 0, 26, 85, 110, 105, 71,
			76, 84, 70, 124, 84, 101, 120, 116, 117, 114,
			101, 83, 97, 109, 112, 108, 101, 114, 85, 116,
			105, 108, 0, 0, 0, 0, 17, 85, 110, 105,
			71, 76, 84, 70, 124, 85, 110, 105, 116, 121,
			80, 97, 116, 104, 0, 0, 0, 0, 21, 85,
			110, 105, 71, 76, 84, 70, 124, 85, 114, 105,
			66, 121, 116, 101, 66, 117, 102, 102, 101, 114,
			0, 0, 0, 0, 15, 85, 110, 105, 71, 76,
			84, 70, 124, 85, 83, 104, 111, 114, 116, 50,
			0, 0, 0, 0, 15, 85, 110, 105, 71, 76,
			84, 70, 124, 85, 83, 104, 111, 114, 116, 51,
			0, 0, 0, 0, 15, 85, 110, 105, 71, 76,
			84, 70, 124, 85, 83, 104, 111, 114, 116, 52,
			0, 0, 0, 0, 29, 85, 110, 105, 71, 76,
			84, 70, 46, 90, 105, 112, 124, 90, 105, 112,
			80, 97, 114, 115, 101, 69, 120, 99, 101, 112,
			116, 105, 111, 110, 0, 0, 0, 0, 16, 85,
			110, 105, 71, 76, 84, 70, 46, 90, 105, 112,
			124, 69, 79, 67, 68, 0, 0, 0, 0, 24,
			85, 110, 105, 71, 76, 84, 70, 46, 90, 105,
			112, 124, 67, 111, 109, 109, 111, 110, 72, 101,
			97, 100, 101, 114, 0, 0, 0, 0, 38, 85,
			110, 105, 71, 76, 84, 70, 46, 90, 105, 112,
			124, 67, 101, 110, 116, 114, 97, 108, 68, 105,
			114, 101, 99, 116, 111, 114, 121, 70, 105, 108,
			101, 72, 101, 97, 100, 101, 114, 0, 0, 0,
			0, 27, 85, 110, 105, 71, 76, 84, 70, 46,
			90, 105, 112, 124, 76, 111, 99, 97, 108, 70,
			105, 108, 101, 72, 101, 97, 100, 101, 114, 0,
			0, 0, 0, 29, 85, 110, 105, 71, 76, 84,
			70, 46, 90, 105, 112, 124, 90, 105, 112, 65,
			114, 99, 104, 105, 118, 101, 83, 116, 111, 114,
			97, 103, 101, 1, 0, 0, 0, 22, 85, 110,
			105, 71, 76, 84, 70, 124, 80, 97, 99, 107,
			97, 103, 101, 86, 101, 114, 115, 105, 111, 110,
			1, 0, 0, 0, 22, 85, 110, 105, 71, 76,
			84, 70, 124, 80, 97, 99, 107, 97, 103, 101,
			86, 101, 114, 115, 105, 111, 110, 0, 0, 0,
			0, 30, 85, 110, 105, 71, 76, 84, 70, 46,
			80, 97, 99, 107, 97, 103, 101, 86, 101, 114,
			115, 105, 111, 110, 124, 86, 101, 114, 115, 105,
			111, 110, 0, 0, 0, 0, 27, 85, 110, 105,
			71, 76, 84, 70, 124, 82, 117, 110, 116, 105,
			109, 101, 71, 108, 116, 102, 73, 110, 115, 116,
			97, 110, 99, 101, 0, 0, 0, 0, 24, 85,
			110, 105, 71, 76, 84, 70, 124, 85, 110, 105,
			71, 76, 84, 70, 69, 120, 99, 101, 112, 116,
			105, 111, 110, 0, 0, 0, 0, 36, 85, 110,
			105, 71, 76, 84, 70, 124, 85, 110, 105, 71,
			76, 84, 70, 78, 111, 116, 83, 117, 112, 112,
			111, 114, 116, 101, 100, 69, 120, 99, 101, 112,
			116, 105, 111, 110, 0, 0, 0, 0, 25, 85,
			110, 105, 71, 76, 84, 70, 124, 71, 108, 98,
			80, 97, 114, 115, 101, 69, 120, 99, 101, 112,
			116, 105, 111, 110, 1, 0, 0, 0, 22, 85,
			110, 105, 71, 76, 84, 70, 124, 85, 110, 105,
			71, 76, 84, 70, 86, 101, 114, 115, 105, 111,
			110, 1, 0, 0, 0, 22, 85, 110, 105, 71,
			76, 84, 70, 124, 85, 110, 105, 71, 76, 84,
			70, 86, 101, 114, 115, 105, 111, 110, 0, 0,
			0, 0, 25, 85, 110, 105, 71, 76, 84, 70,
			124, 86, 97, 108, 105, 100, 97, 116, 105, 111,
			110, 67, 111, 110, 116, 101, 120, 116, 0, 0,
			0, 0, 18, 85, 110, 105, 71, 76, 84, 70,
			124, 86, 97, 108, 105, 100, 97, 116, 105, 111,
			110, 0, 0, 0, 0, 18, 85, 110, 105, 74,
			83, 79, 78, 124, 66, 121, 116, 101, 66, 117,
			102, 102, 101, 114, 1, 0, 0, 0, 20, 85,
			110, 105, 74, 83, 79, 78, 124, 67, 111, 110,
			99, 114, 101, 116, 101, 67, 97, 115, 116, 1,
			0, 0, 0, 20, 85, 110, 105, 74, 83, 79,
			78, 124, 67, 111, 110, 99, 114, 101, 116, 101,
			67, 97, 115, 116, 0, 0, 0, 0, 26, 85,
			110, 105, 74, 83, 79, 78, 124, 84, 114, 101,
			101, 86, 97, 108, 117, 101, 69, 120, 99, 101,
			112, 116, 105, 111, 110, 0, 0, 0, 0, 23,
			85, 110, 105, 74, 83, 79, 78, 124, 80, 97,
			114, 115, 101, 114, 69, 120, 99, 101, 112, 116,
			105, 111, 110, 0, 0, 0, 0, 32, 85, 110,
			105, 74, 83, 79, 78, 124, 68, 101, 115, 101,
			114, 105, 97, 108, 105, 122, 97, 116, 105, 111,
			110, 69, 120, 99, 101, 112, 116, 105, 111, 110,
			0, 0, 0, 0, 26, 85, 110, 105, 74, 83,
			79, 78, 124, 70, 111, 114, 109, 97, 116, 116,
			101, 114, 69, 120, 99, 101, 112, 116, 105, 111,
			110, 0, 0, 0, 0, 30, 85, 110, 105, 74,
			83, 79, 78, 124, 65, 114, 114, 97, 121, 83,
			101, 103, 109, 101, 110, 116, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			22, 85, 110, 105, 74, 83, 79, 78, 124, 66,
			121, 116, 101, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 0, 0, 0, 0, 32, 85, 110,
			105, 74, 83, 79, 78, 124, 68, 97, 116, 101,
			84, 105, 109, 101, 79, 102, 102, 115, 101, 116,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 22, 85, 110, 105, 74, 83,
			79, 78, 124, 69, 110, 117, 109, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 0, 0, 0,
			0, 24, 85, 110, 105, 74, 83, 79, 78, 124,
			83, 116, 114, 105, 110, 103, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			22, 85, 110, 105, 74, 83, 79, 78, 124, 84,
			121, 112, 101, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 0, 0, 0, 0, 27, 85, 110,
			105, 74, 83, 79, 78, 124, 70, 111, 114, 109,
			97, 116, 116, 101, 114, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 27,
			85, 110, 105, 74, 83, 79, 78, 124, 73, 70,
			105, 108, 101, 83, 121, 115, 116, 101, 109, 65,
			99, 99, 101, 115, 115, 111, 114, 0, 0, 0,
			0, 26, 85, 110, 105, 74, 83, 79, 78, 124,
			70, 105, 108, 101, 83, 121, 115, 116, 101, 109,
			65, 99, 99, 101, 115, 115, 111, 114, 0, 0,
			0, 0, 18, 85, 110, 105, 74, 83, 79, 78,
			124, 73, 70, 111, 114, 109, 97, 116, 116, 101,
			114, 0, 0, 0, 0, 18, 85, 110, 105, 74,
			83, 79, 78, 124, 66, 121, 116, 101, 115, 83,
			116, 111, 114, 101, 0, 0, 0, 0, 17, 85,
			110, 105, 74, 83, 79, 78, 124, 66, 121, 116,
			101, 85, 110, 105, 111, 110, 0, 0, 0, 0,
			27, 85, 110, 105, 74, 83, 79, 78, 46, 66,
			121, 116, 101, 85, 110, 105, 111, 110, 124, 87,
			111, 114, 100, 86, 97, 108, 117, 101, 0, 0,
			0, 0, 28, 85, 110, 105, 74, 83, 79, 78,
			46, 66, 121, 116, 101, 85, 110, 105, 111, 110,
			124, 68, 87, 111, 114, 100, 86, 97, 108, 117,
			101, 0, 0, 0, 0, 28, 85, 110, 105, 74,
			83, 79, 78, 46, 66, 121, 116, 101, 85, 110,
			105, 111, 110, 124, 81, 87, 111, 114, 100, 86,
			97, 108, 117, 101, 0, 0, 0, 0, 14, 85,
			110, 105, 74, 83, 79, 78, 124, 73, 83, 116,
			111, 114, 101, 0, 0, 0, 0, 24, 85, 110,
			105, 74, 83, 79, 78, 124, 73, 83, 116, 111,
			114, 101, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 19, 85, 110, 105,
			74, 83, 79, 78, 124, 83, 116, 114, 101, 97,
			109, 83, 116, 111, 114, 101, 0, 0, 0, 0,
			26, 85, 110, 105, 74, 83, 79, 78, 124, 83,
			116, 114, 105, 110, 103, 66, 117, 105, 108, 100,
			101, 114, 83, 116, 111, 114, 101, 0, 0, 0,
			0, 21, 85, 110, 105, 74, 83, 79, 78, 124,
			74, 115, 111, 110, 70, 111, 114, 109, 97, 116,
			116, 101, 114, 0, 0, 0, 0, 29, 85, 110,
			105, 74, 83, 79, 78, 46, 74, 115, 111, 110,
			70, 111, 114, 109, 97, 116, 116, 101, 114, 124,
			67, 111, 110, 116, 101, 120, 116, 0, 0, 0,
			0, 18, 85, 110, 105, 74, 83, 79, 78, 124,
			74, 115, 111, 110, 80, 97, 114, 115, 101, 114,
			0, 0, 0, 0, 18, 85, 110, 105, 74, 83,
			79, 78, 124, 74, 115, 111, 110, 83, 116, 114,
			105, 110, 103, 0, 0, 0, 0, 17, 85, 110,
			105, 74, 83, 79, 78, 124, 74, 115, 111, 110,
			86, 97, 108, 117, 101, 0, 0, 0, 0, 16,
			85, 110, 105, 74, 83, 79, 78, 124, 74, 115,
			111, 110, 78, 111, 100, 101, 0, 0, 0, 0,
			35, 85, 110, 105, 74, 83, 79, 78, 124, 76,
			105, 115, 116, 84, 114, 101, 101, 78, 111, 100,
			101, 65, 114, 114, 97, 121, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			30, 85, 110, 105, 74, 83, 79, 78, 124, 76,
			105, 115, 116, 84, 114, 101, 101, 78, 111, 100,
			101, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 0, 0, 0, 0, 34, 85, 110, 105, 74,
			83, 79, 78, 124, 73, 86, 97, 108, 117, 101,
			78, 111, 100, 101, 79, 98, 106, 101, 99, 116,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 19, 85, 110, 105, 74, 83,
			79, 78, 124, 73, 85, 116, 102, 56, 83, 116,
			114, 105, 110, 103, 0, 0, 0, 0, 19, 85,
			110, 105, 74, 83, 79, 78, 124, 85, 116, 102,
			56, 83, 116, 114, 105, 110, 103, 52, 0, 0,
			0, 0, 20, 85, 110, 105, 74, 83, 79, 78,
			124, 85, 116, 102, 56, 73, 116, 101, 114, 97,
			116, 111, 114, 0, 0, 0, 0, 18, 85, 110,
			105, 74, 83, 79, 78, 124, 85, 116, 102, 56,
			83, 116, 114, 105, 110, 103, 0, 0, 0, 0,
			25, 85, 110, 105, 74, 83, 79, 78, 124, 85,
			116, 102, 56, 83, 116, 114, 105, 110, 103, 66,
			117, 105, 108, 100, 101, 114, 0, 0, 0, 0,
			28, 85, 110, 105, 74, 83, 79, 78, 124, 85,
			116, 102, 56, 83, 116, 114, 105, 110, 103, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 36, 85, 110, 105, 74, 83, 79,
			78, 124, 85, 116, 102, 56, 83, 116, 114, 105,
			110, 103, 83, 112, 108, 105, 116, 116, 101, 114,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115
		};
		result.TotalFiles = 169;
		result.TotalTypes = 247;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniJSON
{
	public class ByteBuffer
	{
		private byte[] m_buffer;

		private int m_used;

		public ArraySegment<byte> Bytes => new ArraySegment<byte>(m_buffer, 0, Count);

		public int Count => m_used;

		public int Remain
		{
			get
			{
				if (m_buffer == null)
				{
					return 0;
				}
				return m_buffer.Length - m_used;
			}
		}

		public ByteBuffer()
		{
		}

		public ByteBuffer(byte[] buffer)
		{
			m_buffer = buffer;
		}

		private void Ensure(int size)
		{
			if (m_buffer == null || size >= m_buffer.Length - m_used)
			{
				byte[] array = new byte[m_used + size];
				if (m_buffer != null && m_used > 0)
				{
					Buffer.BlockCopy(m_buffer, 0, array, 0, m_used);
				}
				m_buffer = array;
			}
		}

		public void Push(byte b)
		{
			Ensure(1);
			m_buffer[m_used++] = b;
		}

		public void Push(byte[] buffer)
		{
			Push(new ArraySegment<byte>(buffer));
		}

		public void Push(ArraySegment<byte> buffer)
		{
			Ensure(buffer.Count);
			Buffer.BlockCopy(buffer.Array, buffer.Offset, m_buffer, m_used, buffer.Count);
			m_used += buffer.Count;
		}

		public void Unshift(int size)
		{
			if (size > m_used)
			{
				throw new ArgumentException();
			}
			if (m_used - size < size)
			{
				Buffer.BlockCopy(m_buffer, m_used, m_buffer, 0, m_used - size);
				m_used -= size;
			}
			else
			{
				byte[] array = new byte[m_used];
				Buffer.BlockCopy(m_buffer, size, array, 0, m_used - size);
				m_buffer = array;
			}
		}
	}
	public static class ConcreteCast
	{
		public static string GetMethodName(Type src, Type dst)
		{
			return $"Cast{src.Name}To{dst.Name}";
		}

		public static MethodInfo GetMethod(Type src, Type dst)
		{
			string methodName = GetMethodName(src, dst);
			return typeof(ConcreteCast).GetMethod(methodName, BindingFlags.Static | BindingFlags.Public);
		}

		public static byte CastByteToByte(byte src)
		{
			return src;
		}

		public static ushort CastByteToUInt16(byte src)
		{
			return src;
		}

		public static uint CastByteToUInt32(byte src)
		{
			return src;
		}

		public static ulong CastByteToUInt64(byte src)
		{
			return src;
		}

		public static sbyte CastByteToSByte(byte src)
		{
			return (sbyte)src;
		}

		public static short CastByteToInt16(byte src)
		{
			return src;
		}

		public static int CastByteToInt32(byte src)
		{
			return src;
		}

		public static long CastByteToInt64(byte src)
		{
			return src;
		}

		public static float CastByteToSingle(byte src)
		{
			return (int)src;
		}

		public static double CastByteToDouble(byte src)
		{
			return (int)src;
		}

		public static byte CastUInt16ToByte(ushort src)
		{
			return (byte)src;
		}

		public static ushort CastUInt16ToUInt16(ushort src)
		{
			return src;
		}

		public static uint CastUInt16ToUInt32(ushort src)
		{
			return src;
		}

		public static ulong CastUInt16ToUInt64(ushort src)
		{
			return src;
		}

		public static sbyte CastUInt16ToSByte(ushort src)
		{
			return (sbyte)src;
		}

		public static short CastUInt16ToInt16(ushort src)
		{
			return (short)src;
		}

		public static int CastUInt16ToInt32(ushort src)
		{
			return src;
		}

		public static long CastUInt16ToInt64(ushort src)
		{
			return src;
		}

		public static float CastUInt16ToSingle(ushort src)
		{
			return (int)src;
		}

		public static double CastUInt16ToDouble(ushort src)
		{
			return (int)src;
		}

		public static byte CastUInt32ToByte(uint src)
		{
			return (byte)src;
		}

		public static ushort CastUInt32ToUInt16(uint src)
		{
			return (ushort)src;
		}

		public static uint CastUInt32ToUInt32(uint src)
		{
			return src;
		}

		public static ulong CastUInt32ToUInt64(uint src)
		{
			return src;
		}

		public static sbyte CastUInt32ToSByte(uint src)
		{
			return (sbyte)src;
		}

		public static short CastUInt32ToInt16(uint src)
		{
			return (short)src;
		}

		public static int CastUInt32ToInt32(uint src)
		{
			return (int)src;
		}

		public static long CastUInt32ToInt64(uint src)
		{
			return src;
		}

		public static float CastUInt32ToSingle(uint src)
		{
			return src;
		}

		public static double CastUInt32ToDouble(uint src)
		{
			return src;
		}

		public static byte CastUInt64ToByte(ulong src)
		{
			return (byte)src;
		}

		public static ushort CastUInt64ToUInt16(ulong src)
		{
			return (ushort)src;
		}

		public static uint CastUInt64ToUInt32(ulong src)
		{
			return (uint)src;
		}

		public static ulong CastUInt64ToUInt64(ulong src)
		{
			return src;
		}

		public static sbyte CastUInt64ToSByte(ulong src)
		{
			return (sbyte)src;
		}

		public static short CastUInt64ToInt16(ulong src)
		{
			return (short)src;
		}

		public static int CastUInt64ToInt32(ulong src)
		{
			return (int)src;
		}

		public static long CastUInt64ToInt64(ulong src)
		{
			return (long)src;
		}

		public static float CastUInt64ToSingle(ulong src)
		{
			return src;
		}

		public static double CastUInt64ToDouble(ulong src)
		{
			return src;
		}

		public static byte CastSByteToByte(sbyte src)
		{
			return (byte)src;
		}

		public static ushort CastSByteToUInt16(sbyte src)
		{
			return (ushort)src;
		}

		public static uint CastSByteToUInt32(sbyte src)
		{
			return (uint)src;
		}

		public static ulong CastSByteToUInt64(sbyte src)
		{
			return (ulong)src;
		}

		public static sbyte CastSByteToSByte(sbyte src)
		{
			return src;
		}

		public static short CastSByteToInt16(sbyte src)
		{
			return src;
		}

		public static int CastSByteToInt32(sbyte src)
		{
			return src;
		}

		public static long CastSByteToInt64(sbyte src)
		{
			return src;
		}

		public static float CastSByteToSingle(sbyte src)
		{
			return src;
		}

		public static double CastSByteToDouble(sbyte src)
		{
			return src;
		}

		public static byte CastInt16ToByte(short src)
		{
			return (byte)src;
		}

		public static ushort CastInt16ToUInt16(short src)
		{
			

valheim_Data/Managed/UniGLTF.Utils.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[242]
		{
			0, 0, 0, 1, 0, 0, 0, 54, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 116, 105, 108, 115, 92, 67, 97,
			99, 104, 101, 100, 69, 110, 117, 109, 92, 67,
			97, 99, 104, 101, 100, 69, 110, 117, 109, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 58,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 116, 105, 108, 115, 92,
			67, 97, 99, 104, 101, 100, 69, 110, 117, 109,
			92, 67, 97, 99, 104, 101, 100, 69, 110, 117,
			109, 84, 121, 112, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 51, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 116, 105, 108, 115, 92, 69, 117, 99, 108,
			105, 100, 101, 97, 110, 84, 114, 97, 110, 115,
			102, 111, 114, 109, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 47, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			116, 105, 108, 115, 92, 84, 114, 97, 110, 115,
			102, 111, 114, 109, 83, 116, 97, 116, 101, 46,
			99, 115
		};
		result.TypesData = new byte[132]
		{
			0, 0, 0, 0, 24, 85, 110, 105, 71, 76,
			84, 70, 46, 85, 116, 105, 108, 115, 124, 67,
			97, 99, 104, 101, 100, 69, 110, 117, 109, 0,
			0, 0, 0, 28, 85, 110, 105, 71, 76, 84,
			70, 46, 85, 116, 105, 108, 115, 124, 67, 97,
			99, 104, 101, 100, 69, 110, 117, 109, 84, 121,
			112, 101, 0, 0, 0, 0, 32, 85, 110, 105,
			71, 76, 84, 70, 46, 85, 116, 105, 108, 115,
			124, 69, 117, 99, 108, 105, 100, 101, 97, 110,
			84, 114, 97, 110, 115, 102, 111, 114, 109, 0,
			0, 0, 0, 28, 85, 110, 105, 71, 76, 84,
			70, 46, 85, 116, 105, 108, 115, 124, 84, 114,
			97, 110, 115, 102, 111, 114, 109, 83, 116, 97,
			116, 101
		};
		result.TotalFiles = 4;
		result.TotalTypes = 4;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniGLTF.Utils;

public static class CachedEnum
{
	public static T Parse<T>(string name, bool ignoreCase = false) where T : struct, Enum
	{
		if (ignoreCase)
		{
			return CachedEnumType<T>.IgnoreCaseMap[name];
		}
		return CachedEnumType<T>.Map[name];
	}

	public static T ParseOrDefault<T>(string name, bool ignoreCase = false, T defaultValue = default(T)) where T : struct, Enum
	{
		try
		{
			return Parse<T>(name, ignoreCase);
		}
		catch (KeyNotFoundException)
		{
			return defaultValue;
		}
	}

	public static T[] GetValues<T>() where T : struct, Enum
	{
		return CachedEnumType<T>.Values;
	}
}
internal static class CachedEnumType<T> where T : struct, Enum
{
	public static IReadOnlyDictionary<string, T> Map { get; } = CreateStringEnumMap(ignoreCase: false);


	public static IReadOnlyDictionary<string, T> IgnoreCaseMap { get; } = CreateStringEnumMap(ignoreCase: true);


	public static T[] Values { get; } = (T[])Enum.GetValues(typeof(T));


	private static Dictionary<string, T> CreateStringEnumMap(bool ignoreCase)
	{
		Dictionary<string, T> dictionary = (ignoreCase ? new Dictionary<string, T>(StringComparer.OrdinalIgnoreCase) : new Dictionary<string, T>());
		foreach (T value in Enum.GetValues(typeof(T)))
		{
			dictionary.Add(value.ToString(), value);
		}
		return dictionary;
	}
}
public readonly struct EuclideanTransform
{
	public readonly Quaternion Rotation;

	public readonly Vector3 Translation;

	public EuclideanTransform(Quaternion rotation, Vector3 translation)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//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_0009: Unknown result type (might be due to invalid IL or missing references)
		Rotation = rotation;
		Translation = translation;
	}

	public EuclideanTransform(Quaternion rotation)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//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_000d: Unknown result type (might be due to invalid IL or missing references)
		Rotation = rotation;
		Translation = Vector3.zero;
	}

	public EuclideanTransform(Vector3 translation)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		Rotation = Quaternion.identity;
		Translation = translation;
	}

	public EuclideanTransform(Matrix4x4 matrix)
	{
		//IL_0003: 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_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		Rotation = ((Matrix4x4)(ref matrix)).rotation;
		Translation = Vector4.op_Implicit(((Matrix4x4)(ref matrix)).GetColumn(3));
	}
}
public readonly struct TransformState
{
	public Vector3 Position { get; }

	public Vector3 LocalPosition { get; }

	public Quaternion Rotation { get; }

	public Quaternion LocalRotation { get; }

	public Vector3 LocalScale { get; }

	public TransformState(Vector3 position, Vector3 localPosition, Quaternion rotation, Quaternion localRotation, Vector3 localScale)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//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_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: 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: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		Position = position;
		LocalPosition = localPosition;
		Rotation = rotation;
		LocalRotation = localRotation;
		LocalScale = localScale;
	}

	public TransformState(Transform tf)
	{
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: 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_0073: 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_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//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_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)tf == (Object)null)
		{
			Position = Vector3.zero;
			LocalPosition = Vector3.zero;
			Rotation = Quaternion.identity;
			LocalRotation = Quaternion.identity;
			LocalScale = Vector3.one;
		}
		else
		{
			Position = tf.position;
			LocalPosition = tf.localPosition;
			Rotation = tf.rotation;
			LocalRotation = tf.localRotation;
			LocalScale = tf.localScale;
		}
	}
}

valheim_Data/Managed/UniHumanoid.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using UniGLTF.Utils;
using UnityEngine;
using UnityEngine.Serialization;
using VRMShaders;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[1970]
		{
			0, 0, 0, 1, 0, 0, 0, 59, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 92, 65, 110, 105, 109, 97, 116,
			105, 111, 110, 67, 108, 105, 112, 85, 116, 105,
			108, 105, 116, 121, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 56, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			92, 65, 118, 97, 116, 97, 114, 68, 101, 115,
			99, 114, 105, 112, 116, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 54, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 92, 66, 111, 110, 101, 71,
			105, 122, 109, 111, 68, 114, 97, 119, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			50, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 72, 117,
			109, 97, 110, 111, 105, 100, 92, 66, 111, 110,
			101, 77, 97, 112, 112, 105, 110, 103, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 46, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 92, 66, 118, 104, 66, 111,
			110, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 64, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 92, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 92,
			69, 110, 117, 109, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 54, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			92, 70, 111, 114, 99, 101, 85, 110, 105, 113,
			117, 101, 78, 97, 109, 101, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 49, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 92, 70, 111, 114, 109, 97, 116, 92,
			66, 118, 104, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 56, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 72, 117, 109, 97, 110, 111, 105, 100, 92,
			70, 111, 114, 109, 97, 116, 92, 66, 118, 104,
			67, 104, 97, 110, 110, 101, 108, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 61, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 92, 70, 111, 114, 109, 97, 116,
			92, 66, 118, 104, 67, 104, 97, 110, 110, 101,
			108, 67, 117, 114, 118, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 56, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 92, 70, 111, 114, 109, 97, 116, 92,
			66, 118, 104, 69, 110, 100, 83, 105, 116, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			58, 92, 65, 115, 115, 101, 116, 115, 92, 85,
			110, 105, 71, 76, 84, 70, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 85, 110, 105, 72, 117,
			109, 97, 110, 111, 105, 100, 92, 70, 111, 114,
			109, 97, 116, 92, 66, 118, 104, 69, 120, 99,
			101, 112, 116, 105, 111, 110, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 53, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 92, 70, 111, 114, 109, 97, 116, 92,
			66, 118, 104, 78, 111, 100, 101, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 47, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 92, 72, 117, 109, 97, 110, 111,
			105, 100, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 53, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 92, 72,
			117, 109, 97, 110, 111, 105, 100, 76, 111, 97,
			100, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 52, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 72, 117, 109, 97, 110, 111, 105, 100, 92,
			72, 117, 109, 97, 110, 80, 111, 115, 101, 67,
			108, 105, 112, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 56, 92, 65, 115, 115, 101, 116,
			115, 92, 85, 110, 105, 71, 76, 84, 70, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 72, 117, 109, 97, 110, 111, 105, 100, 92,
			72, 117, 109, 97, 110, 80, 111, 115, 101, 84,
			114, 97, 110, 115, 102, 101, 114, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 44, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 92, 73, 66, 111, 110, 101, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 58,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 72, 117, 109,
			97, 110, 111, 105, 100, 92, 73, 79, 92, 66,
			118, 104, 65, 110, 105, 109, 97, 116, 105, 111,
			110, 67, 108, 105, 112, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 53, 92, 65, 115, 115,
			101, 116, 115, 92, 85, 110, 105, 71, 76, 84,
			70, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 72, 117, 109, 97, 110, 111, 105,
			100, 92, 73, 79, 92, 66, 118, 104, 73, 109,
			112, 111, 114, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 60, 92, 65, 115,
			115, 101, 116, 115, 92, 85, 110, 105, 71, 76,
			84, 70, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 92, 73, 79, 92, 66, 118, 104, 73,
			109, 112, 111, 114, 116, 101, 114, 67, 111, 110,
			116, 101, 120, 116, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 66, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			92, 73, 79, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 66, 118, 104, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 68, 92,
			65, 115, 115, 101, 116, 115, 92, 85, 110, 105,
			71, 76, 84, 70, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 92, 73, 79, 92, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 92, 85,
			110, 105, 116, 121, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 50, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			92, 77, 117, 115, 99, 108, 101, 68, 101, 98,
			117, 103, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 54, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 92, 77,
			117, 115, 99, 108, 101, 73, 110, 115, 112, 101,
			99, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 60, 92, 65, 115, 115, 101,
			116, 115, 92, 85, 110, 105, 71, 76, 84, 70,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			92, 80, 111, 115, 101, 77, 111, 100, 105, 102,
			105, 101, 114, 92, 72, 97, 110, 100, 80, 111,
			115, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 59, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 92, 80,
			111, 115, 101, 77, 111, 100, 105, 102, 105, 101,
			114, 92, 72, 97, 110, 100, 82, 105, 103, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 65,
			92, 65, 115, 115, 101, 116, 115, 92, 85, 110,
			105, 71, 76, 84, 70, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 85, 110, 105, 72, 117, 109,
			97, 110, 111, 105, 100, 92, 80, 111, 115, 101,
			77, 111, 100, 105, 102, 105, 101, 114, 92, 73,
			80, 111, 115, 101, 77, 111, 100, 105, 102, 105,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 47, 92, 65, 115, 115, 101, 116, 115,
			92, 85, 110, 105, 71, 76, 84, 70, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 92, 83,
			107, 101, 108, 101, 116, 111, 110, 46, 99, 115,
			0, 0, 0, 4, 0, 0, 0, 56, 92, 65,
			115, 115, 101, 116, 115, 92, 85, 110, 105, 71,
			76, 84, 70, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 92, 83, 107, 101, 108, 101, 116,
			111, 110, 69, 115, 116, 105, 109, 97, 116, 111,
			114, 46, 99, 115, 0, 0, 0, 4, 0, 0,
			0, 58, 92, 65, 115, 115, 101, 116, 115, 92,
			85, 110, 105, 71, 76, 84, 70, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 110, 105, 72,
			117, 109, 97, 110, 111, 105, 100, 92, 83, 107,
			101, 108, 101, 116, 111, 110, 77, 101, 115, 104,
			85, 116, 105, 108, 105, 116, 121, 46, 99, 115
		};
		result.TypesData = new byte[1462]
		{
			0, 0, 0, 0, 32, 85, 110, 105, 72, 117,
			109, 97, 110, 111, 105, 100, 124, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 67, 108, 105, 112,
			85, 116, 105, 108, 105, 116, 121, 0, 0, 0,
			0, 21, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 111, 110, 101, 76, 105,
			109, 105, 116, 0, 0, 0, 0, 29, 85, 110,
			105, 72, 117, 109, 97, 110, 111, 105, 100, 124,
			65, 118, 97, 116, 97, 114, 68, 101, 115, 99,
			114, 105, 112, 116, 105, 111, 110, 0, 0, 0,
			0, 27, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 111, 110, 101, 71, 105,
			122, 109, 111, 68, 114, 97, 119, 101, 114, 0,
			0, 0, 0, 23, 85, 110, 105, 72, 117, 109,
			97, 110, 111, 105, 100, 124, 66, 111, 110, 101,
			77, 97, 112, 112, 105, 110, 103, 0, 0, 0,
			0, 19, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 118, 104, 66, 111, 110,
			101, 0, 0, 0, 0, 26, 85, 110, 105, 72,
			117, 109, 97, 110, 111, 105, 100, 124, 69, 110,
			117, 109, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 27, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 124, 70,
			111, 114, 99, 101, 85, 110, 105, 113, 117, 101,
			78, 97, 109, 101, 0, 0, 0, 0, 15, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			124, 66, 118, 104, 0, 0, 0, 0, 32, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			46, 66, 118, 104, 124, 80, 97, 116, 104, 87,
			105, 116, 104, 80, 114, 111, 112, 101, 114, 116,
			121, 0, 0, 0, 0, 32, 85, 110, 105, 72,
			117, 109, 97, 110, 111, 105, 100, 124, 66, 118,
			104, 67, 104, 97, 110, 110, 101, 108, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 27, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 124, 66, 118, 104, 67, 104,
			97, 110, 110, 101, 108, 67, 117, 114, 118, 101,
			0, 0, 0, 0, 22, 85, 110, 105, 72, 117,
			109, 97, 110, 111, 105, 100, 124, 66, 118, 104,
			69, 110, 100, 83, 105, 116, 101, 0, 0, 0,
			0, 24, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 118, 104, 69, 120, 99,
			101, 112, 116, 105, 111, 110, 0, 0, 0, 0,
			19, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 124, 66, 118, 104, 78, 111, 100, 101,
			0, 0, 0, 0, 20, 85, 110, 105, 72, 117,
			109, 97, 110, 111, 105, 100, 124, 72, 117, 109,
			97, 110, 111, 105, 100, 0, 0, 0, 0, 31,
			85, 110, 105, 72, 117, 109, 97, 110, 111, 105,
			100, 46, 72, 117, 109, 97, 110, 111, 105, 100,
			124, 86, 97, 108, 105, 100, 97, 116, 105, 111,
			110, 0, 0, 0, 0, 26, 85, 110, 105, 72,
			117, 109, 97, 110, 111, 105, 100, 124, 72, 117,
			109, 97, 110, 111, 105, 100, 76, 111, 97, 100,
			101, 114, 0, 0, 0, 0, 25, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 124, 72,
			117, 109, 97, 110, 80, 111, 115, 101, 67, 108,
			105, 112, 0, 0, 0, 0, 29, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 124, 72,
			117, 109, 97, 110, 80, 111, 115, 101, 84, 114,
			97, 110, 115, 102, 101, 114, 0, 0, 0, 0,
			17, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 124, 73, 66, 111, 110, 101, 0, 0,
			0, 0, 27, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 124, 73, 66, 111, 110, 101,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 24, 85, 110, 105, 72, 117,
			109, 97, 110, 111, 105, 100, 124, 66, 118, 104,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 0,
			0, 0, 0, 33, 85, 110, 105, 72, 117, 109,
			97, 110, 111, 105, 100, 46, 66, 118, 104, 65,
			110, 105, 109, 97, 116, 105, 111, 110, 124, 67,
			117, 114, 118, 101, 83, 101, 116, 0, 0, 0,
			0, 23, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 118, 104, 73, 109, 112,
			111, 114, 116, 101, 114, 0, 0, 0, 0, 27,
			85, 110, 105, 72, 117, 109, 97, 110, 111, 105,
			100, 124, 73, 109, 112, 111, 114, 116, 101, 114,
			67, 111, 110, 116, 101, 120, 116, 0, 0, 0,
			0, 30, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 118, 104, 73, 109, 112,
			111, 114, 116, 101, 114, 67, 111, 110, 116, 101,
			120, 116, 0, 0, 0, 0, 25, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 124, 66,
			118, 104, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 27, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 124, 85,
			110, 105, 116, 121, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 0, 0, 0, 0, 23, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			124, 77, 117, 115, 99, 108, 101, 68, 101, 98,
			117, 103, 0, 0, 0, 0, 30, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 46, 77,
			117, 115, 99, 108, 101, 68, 101, 98, 117, 103,
			124, 77, 117, 115, 99, 108, 101, 0, 0, 0,
			0, 27, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 77, 117, 115, 99, 108, 101,
			73, 110, 115, 112, 101, 99, 116, 111, 114, 0,
			0, 0, 0, 28, 85, 110, 105, 72, 117, 109,
			97, 110, 111, 105, 100, 124, 72, 97, 110, 100,
			80, 111, 115, 101, 77, 111, 100, 105, 102, 105,
			101, 114, 0, 0, 0, 0, 37, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 46, 72,
			97, 110, 100, 80, 111, 115, 101, 77, 111, 100,
			105, 102, 105, 101, 114, 124, 72, 97, 110, 100,
			80, 111, 115, 101, 0, 0, 0, 0, 19, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			124, 72, 97, 110, 100, 82, 105, 103, 0, 0,
			0, 0, 25, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 124, 73, 80, 111, 115, 101,
			77, 111, 100, 105, 102, 105, 101, 114, 0, 0,
			0, 0, 20, 85, 110, 105, 72, 117, 109, 97,
			110, 111, 105, 100, 124, 83, 107, 101, 108, 101,
			116, 111, 110, 0, 0, 0, 0, 29, 85, 110,
			105, 72, 117, 109, 97, 110, 111, 105, 100, 124,
			73, 83, 107, 101, 108, 101, 116, 111, 110, 68,
			101, 116, 101, 99, 116, 111, 114, 0, 0, 0,
			0, 32, 85, 110, 105, 72, 117, 109, 97, 110,
			111, 105, 100, 124, 66, 118, 104, 83, 107, 101,
			108, 101, 116, 111, 110, 69, 115, 116, 105, 109,
			97, 116, 111, 114, 0, 0, 0, 0, 36, 85,
			110, 105, 72, 117, 109, 97, 110, 111, 105, 100,
			46, 66, 118, 104, 83, 107, 101, 108, 101, 116,
			111, 110, 69, 115, 116, 105, 109, 97, 116, 111,
			114, 124, 65, 114, 109, 0, 0, 0, 0, 36,
			85, 110, 105, 72, 117, 109, 97, 110, 111, 105,
			100, 46, 66, 118, 104, 83, 107, 101, 108, 101,
			116, 111, 110, 69, 115, 116, 105, 109, 97, 116,
			111, 114, 124, 76, 101, 103, 0, 0, 0, 0,
			31, 85, 110, 105, 72, 117, 109, 97, 110, 111,
			105, 100, 124, 83, 107, 101, 108, 101, 116, 111,
			110, 77, 101, 115, 104, 85, 116, 105, 108, 105,
			116, 121, 0, 0, 0, 0, 38, 85, 110, 105,
			72, 117, 109, 97, 110, 111, 105, 100, 46, 83,
			107, 101, 108, 101, 116, 111, 110, 77, 101, 115,
			104, 85, 116, 105, 108, 105, 116, 121, 124, 84,
			83, 82, 66, 111, 120, 0, 0, 0, 0, 43,
			85, 110, 105, 72, 117, 109, 97, 110, 111, 105,
			100, 46, 83, 107, 101, 108, 101, 116, 111, 110,
			77, 101, 115, 104, 85, 116, 105, 108, 105, 116,
			121, 124, 77, 101, 115, 104, 66, 117, 105, 108,
			100, 101, 114, 0, 0, 0, 0, 44, 85, 110,
			105, 72, 117, 109, 97, 110, 111, 105, 100, 46,
			83, 107, 101, 108, 101, 116, 111, 110, 77, 101,
			115, 104, 85, 116, 105, 108, 105, 116, 121, 124,
			66, 111, 110, 101, 72, 101, 97, 100, 84, 97,
			105, 108
		};
		result.TotalFiles = 31;
		result.TotalTypes = 45;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniHumanoid;

public static class AnimationClipUtility
{
	private static Dictionary<string, string> TraitPropMap = new Dictionary<string, string>
	{
		{ "Left Thumb 1 Stretched", "LeftHand.Thumb.1 Stretched" },
		{ "Left Thumb Spread", "LeftHand.Thumb Spread" },
		{ "Left Thumb 2 Stretched", "LeftHand.Thumb.2 Stretched" },
		{ "Left Thumb 3 Stretched", "LeftHand.Thumb.3 Stretched" },
		{ "Left Index 1 Stretched", "LeftHand.Index.1 Stretched" },
		{ "Left Index Spread", "LeftHand.Index Spread" },
		{ "Left Index 2 Stretched", "LeftHand.Index.2 Stretched" },
		{ "Left Index 3 Stretched", "LeftHand.Index.3 Stretched" },
		{ "Left Middle 1 Stretched", "LeftHand.Middle.1 Stretched" },
		{ "Left Middle Spread", "LeftHand.Middle Spread" },
		{ "Left Middle 2 Stretched", "LeftHand.Middle.2 Stretched" },
		{ "Left Middle 3 Stretched", "LeftHand.Middle.3 Stretched" },
		{ "Left Ring 1 Stretched", "LeftHand.Ring.1 Stretched" },
		{ "Left Ring Spread", "LeftHand.Ring Spread" },
		{ "Left Ring 2 Stretched", "LeftHand.Ring.2 Stretched" },
		{ "Left Ring 3 Stretched", "LeftHand.Ring.3 Stretched" },
		{ "Left Little 1 Stretched", "LeftHand.Little.1 Stretched" },
		{ "Left Little Spread", "LeftHand.Little Spread" },
		{ "Left Little 2 Stretched", "LeftHand.Little.2 Stretched" },
		{ "Left Little 3 Stretched", "LeftHand.Little.3 Stretched" },
		{ "Right Thumb 1 Stretched", "RightHand.Thumb.1 Stretched" },
		{ "Right Thumb Spread", "RightHand.Thumb Spread" },
		{ "Right Thumb 2 Stretched", "RightHand.Thumb.2 Stretched" },
		{ "Right Thumb 3 Stretched", "RightHand.Thumb.3 Stretched" },
		{ "Right Index 1 Stretched", "RightHand.Index.1 Stretched" },
		{ "Right Index Spread", "RightHand.Index Spread" },
		{ "Right Index 2 Stretched", "RightHand.Index.2 Stretched" },
		{ "Right Index 3 Stretched", "RightHand.Index.3 Stretched" },
		{ "Right Middle 1 Stretched", "RightHand.Middle.1 Stretched" },
		{ "Right Middle Spread", "RightHand.Middle Spread" },
		{ "Right Middle 2 Stretched", "RightHand.Middle.2 Stretched" },
		{ "Right Middle 3 Stretched", "RightHand.Middle.3 Stretched" },
		{ "Right Ring 1 Stretched", "RightHand.Ring.1 Stretched" },
		{ "Right Ring Spread", "RightHand.Ring Spread" },
		{ "Right Ring 2 Stretched", "RightHand.Ring.2 Stretched" },
		{ "Right Ring 3 Stretched", "RightHand.Ring.3 Stretched" },
		{ "Right Little 1 Stretched", "RightHand.Little.1 Stretched" },
		{ "Right Little Spread", "RightHand.Little Spread" },
		{ "Right Little 2 Stretched", "RightHand.Little.2 Stretched" },
		{ "Right Little 3 Stretched", "RightHand.Little.3 Stretched" }
	};

	public static AnimationClip CreateAnimationClipFromHumanPose(HumanPose pose)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Expected O, but got Unknown
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Expected O, but got Unknown
		//IL_0054: 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_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0064: 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)
		//IL_006f: Expected O, but got Unknown
		//IL_0097: 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: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Expected O, but got Unknown
		//IL_00dc: 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_00e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f8: Expected O, but got Unknown
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0122: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		//IL_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_013d: Expected O, but got Unknown
		//IL_0166: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Unknown result type (might be due to invalid IL or missing references)
		//IL_0176: Unknown result type (might be due to invalid IL or missing references)
		//IL_017b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0182: Expected O, but got Unknown
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c7: Expected O, but got Unknown
		//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0203: Unknown result type (might be due to invalid IL or missing references)
		//IL_0208: Unknown result type (might be due to invalid IL or missing references)
		//IL_020f: Expected O, but got Unknown
		AnimationClip val = new AnimationClip();
		AnimationCurve val2 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyPosition.x)
		});
		string text = "RootT.x";
		val.SetCurve((string)null, typeof(Animator), text, val2);
		AnimationCurve val3 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyPosition.y)
		});
		string text2 = "RootT.y";
		val.SetCurve((string)null, typeof(Animator), text2, val3);
		AnimationCurve val4 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyPosition.z)
		});
		string text3 = "RootT.z";
		val.SetCurve((string)null, typeof(Animator), text3, val4);
		AnimationCurve val5 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyRotation.x)
		});
		string text4 = "RootQ.x";
		val.SetCurve((string)null, typeof(Animator), text4, val5);
		AnimationCurve val6 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyRotation.y)
		});
		string text5 = "RootQ.y";
		val.SetCurve((string)null, typeof(Animator), text5, val6);
		AnimationCurve val7 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyRotation.z)
		});
		string text6 = "RootQ.z";
		val.SetCurve((string)null, typeof(Animator), text6, val7);
		AnimationCurve val8 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
		{
			new Keyframe(0f, pose.bodyRotation.w)
		});
		string text7 = "RootQ.w";
		val.SetCurve((string)null, typeof(Animator), text7, val8);
		for (int i = 0; i < HumanTrait.MuscleCount; i++)
		{
			AnimationCurve val9 = new AnimationCurve((Keyframe[])(object)new Keyframe[1]
			{
				new Keyframe(0f, pose.muscles[i])
			});
			string text8 = HumanTrait.MuscleName[i];
			if (TraitPropMap.ContainsKey(text8))
			{
				text8 = TraitPropMap[text8];
			}
			val.SetCurve((string)null, typeof(Animator), text8, val9);
		}
		return val;
	}
}
[Serializable]
public struct BoneLimit
{
	public HumanBodyBones humanBone;

	public string boneName;

	public bool useDefaultValues;

	public Vector3 min;

	public Vector3 max;

	public Vector3 center;

	public float axisLength;

	private static readonly Dictionary<HumanBodyBones, string> cachedHumanBodyBonesToBoneTraitNameMap = ((IEnumerable<string>)HumanTrait.BoneName).ToDictionary((Func<string, HumanBodyBones>)((string traitName) => (HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), traitName.Replace(" ", ""))), (Func<string, string>)((string traitName) => traitName));

	private static readonly Dictionary<string, HumanBodyBones> cachedBoneTraitNameToHumanBodyBonesMap = ((IEnumerable<string>)HumanTrait.BoneName).ToDictionary((Func<string, string>)((string traitName) => traitName), (Func<string, HumanBodyBones>)((string traitName) => (HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), traitName.Replace(" ", ""))));

	public static BoneLimit From(HumanBone bone)
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: 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)
		BoneLimit result = default(BoneLimit);
		result.humanBone = cachedBoneTraitNameToHumanBodyBonesMap[((HumanBone)(ref bone)).humanName];
		result.boneName = ((HumanBone)(ref bone)).boneName;
		result.useDefaultValues = ((HumanLimit)(ref bone.limit)).useDefaultValues;
		result.min = ((HumanLimit)(ref bone.limit)).min;
		result.max = ((HumanLimit)(ref bone.limit)).max;
		result.center = ((HumanLimit)(ref bone.limit)).center;
		result.axisLength = ((HumanLimit)(ref bone.limit)).axisLength;
		return result;
	}

	public HumanBone ToHumanBone()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: 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_007d: Unknown result type (might be due to invalid IL or missing references)
		HumanBone result = default(HumanBone);
		((HumanBone)(ref result)).boneName = boneName;
		((HumanBone)(ref result)).humanName = cachedHumanBodyBonesToBoneTraitNameMap[humanBone];
		HumanLimit limit = default(HumanLimit);
		((HumanLimit)(ref limit)).useDefaultValues = useDefaultValues;
		((HumanLimit)(ref limit)).axisLength = axisLength;
		((HumanLimit)(ref limit)).center = center;
		((HumanLimit)(ref limit)).max = max;
		((HumanLimit)(ref limit)).min = min;
		result.limit = limit;
		return result;
	}
}
[Serializable]
public class AvatarDescription : ScriptableObject
{
	public float armStretch = 0.05f;

	public float legStretch = 0.05f;

	public float upperArmTwist = 0.5f;

	public float lowerArmTwist = 0.5f;

	public float upperLegTwist = 0.5f;

	public float lowerLegTwist = 0.5f;

	public float feetSpacing;

	public bool hasTranslationDoF;

	public BoneLimit[] human;

	public HumanDescription ToHumanDescription(Transform root)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0086: 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)
		Transform[] componentsInChildren = ((Component)root).GetComponentsInChildren<Transform>();
		SkeletonBone[] array = (SkeletonBone[])(object)new SkeletonBone[componentsInChildren.Length];
		int num = 0;
		Transform[] array2 = componentsInChildren;
		foreach (Transform t in array2)
		{
			array[num] = t.ToSkeletonBone();
			num++;
		}
		HumanBone[] array3 = (HumanBone[])(object)new HumanBone[human.Length];
		num = 0;
		BoneLimit[] array4 = human;
		foreach (BoneLimit boneLimit in array4)
		{
			array3[num] = boneLimit.ToHumanBone();
			num++;
		}
		HumanDescription result = default(HumanDescription);
		result.skeleton = array;
		result.human = array3;
		((HumanDescription)(ref result)).armStretch = armStretch;
		((HumanDescription)(ref result)).legStretch = legStretch;
		((HumanDescription)(ref result)).upperArmTwist = upperArmTwist;
		((HumanDescription)(ref result)).lowerArmTwist = lowerArmTwist;
		((HumanDescription)(ref result)).upperLegTwist = upperLegTwist;
		((HumanDescription)(ref result)).lowerLegTwist = lowerLegTwist;
		((HumanDescription)(ref result)).feetSpacing = feetSpacing;
		((HumanDescription)(ref result)).hasTranslationDoF = hasTranslationDoF;
		return result;
	}

	public Avatar CreateAvatar(Transform root)
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		ForceUniqueName.Process(root);
		return AvatarBuilder.BuildHumanAvatar(((Component)root).gameObject, ToHumanDescription(root));
	}

	public Avatar CreateAvatarAndSetup(Transform root)
	{
		//IL_0095: Unknown result type (might be due to invalid IL or missing references)
		Avatar val = CreateAvatar(root);
		((Object)val).name = ((Object)this).name;
		Animator component = ((Component)root).GetComponent<Animator>();
		if ((Object)(object)component != (Object)null)
		{
			Dictionary<Transform, Vector3> dictionary = root.Traverse().ToDictionary((Transform x) => x, (Transform x) => x.position);
			component.avatar = val;
			foreach (Transform item in root.Traverse())
			{
				item.position = dictionary[item];
			}
		}
		HumanPoseTransfer component2 = ((Component)root).GetComponent<HumanPoseTransfer>();
		if ((Object)(object)component2 != (Object)null)
		{
			component2.Avatar = val;
		}
		return val;
	}

	public static AvatarDescription CreateFrom(HumanDescription description)
	{
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		AvatarDescription avatarDescription = ScriptableObject.CreateInstance<AvatarDescription>();
		((Object)avatarDescription).name = "AvatarDescription";
		avatarDescription.armStretch = ((HumanDescription)(ref description)).armStretch;
		avatarDescription.legStretch = ((HumanDescription)(ref description)).legStretch;
		avatarDescription.feetSpacing = ((HumanDescription)(ref description)).feetSpacing;
		avatarDescription.hasTranslationDoF = ((HumanDescription)(ref description)).hasTranslationDoF;
		avatarDescription.lowerArmTwist = ((HumanDescription)(ref description)).lowerArmTwist;
		avatarDescription.lowerLegTwist = ((HumanDescription)(ref description)).lowerLegTwist;
		avatarDescription.upperArmTwist = ((HumanDescription)(ref description)).upperArmTwist;
		avatarDescription.upperLegTwist = ((HumanDescription)(ref description)).upperLegTwist;
		avatarDescription.human = description.human.Select(BoneLimit.From).ToArray();
		return avatarDescription;
	}

	public static AvatarDescription Create(AvatarDescription src = null)
	{
		AvatarDescription avatarDescription = ScriptableObject.CreateInstance<AvatarDescription>();
		((Object)avatarDescription).name = "AvatarDescription";
		if ((Object)(object)src != (Object)null)
		{
			avatarDescription.armStretch = src.armStretch;
			avatarDescription.legStretch = src.legStretch;
			avatarDescription.feetSpacing = src.feetSpacing;
			avatarDescription.upperArmTwist = src.upperArmTwist;
			avatarDescription.lowerArmTwist = src.lowerArmTwist;
			avatarDescription.upperLegTwist = src.upperLegTwist;
			avatarDescription.lowerLegTwist = src.lowerLegTwist;
		}
		else
		{
			avatarDescription.armStretch = 0.05f;
			avatarDescription.legStretch = 0.05f;
			avatarDescription.feetSpacing = 0f;
			avatarDescription.lowerArmTwist = 0.5f;
			avatarDescription.upperArmTwist = 0.5f;
			avatarDescription.upperLegTwist = 0.5f;
			avatarDescription.lowerLegTwist = 0.5f;
		}
		return avatarDescription;
	}

	public static AvatarDescription Create(Transform[] boneTransforms, Skeleton skeleton)
	{
		return Create(skeleton.Bones.Select((KeyValuePair<HumanBodyBones, int> x) => new KeyValuePair<HumanBodyBones, Transform>(x.Key, boneTransforms[x.Value])));
	}

	public static AvatarDescription Create(IEnumerable<KeyValuePair<HumanBodyBones, Transform>> skeleton)
	{
		AvatarDescription avatarDescription = Create();
		avatarDescription.SetHumanBones(skeleton);
		return avatarDescription;
	}

	public void SetHumanBones(IEnumerable<KeyValuePair<HumanBodyBones, Transform>> skeleton)
	{
		human = skeleton.Select(delegate(KeyValuePair<HumanBodyBones, Transform> x)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			BoneLimit result = default(BoneLimit);
			result.humanBone = x.Key;
			result.boneName = ((Object)x.Value).name;
			result.useDefaultValues = true;
			return result;
		}).ToArray();
	}

	public static Avatar CreateAvatarForCopyHierarchy(Animator src, GameObject dst, IDictionary<Transform, Transform> boneMap, Action<AvatarDescription> modAvatarDesc = null)
	{
		if ((Object)(object)src == (Object)null)
		{
			throw new ArgumentNullException("src");
		}
		Dictionary<HumanBodyBones, Transform> humanBones = (from x in CachedEnum.GetValues<HumanBodyBones>()
			where (int)x != 55
			select new
			{
				Key = x,
				Value = src.GetBoneTransform(x)
			} into x
			where (Object)(object)x.Value != (Object)null
			where boneMap.ContainsKey(x.Value)
			select x).ToDictionary(x => x.Key, x => boneMap[x.Value]);
		AvatarDescription avatarDescription = Create();
		modAvatarDesc?.Invoke(avatarDescription);
		avatarDescription.SetHumanBones(humanBones);
		Avatar obj = avatarDescription.CreateAvatar(dst.transform);
		((Object)obj).name = "created";
		return obj;
	}

	public static Avatar RecreateAvatar(Animator src)
	{
		if ((Object)(object)src == (Object)null)
		{
			throw new ArgumentNullException("src");
		}
		Dictionary<HumanBodyBones, Transform> humanBones = (from x in CachedEnum.GetValues<HumanBodyBones>()
			where (int)x != 55
			select new
			{
				Key = x,
				Value = src.GetBoneTransform(x)
			} into x
			where (Object)(object)x.Value != (Object)null
			select x).ToDictionary(x => x.Key, x => x.Value);
		AvatarDescription avatarDescription = Create();
		avatarDescription.SetHumanBones(humanBones);
		Avatar obj = avatarDescription.CreateAvatar(((Component)src).transform);
		((Object)obj).name = "created";
		return obj;
	}
}
public class BoneGizmoDrawer : MonoBehaviour
{
	private const float size = 0.03f;

	private readonly Vector3 SIZE = new Vector3(0.03f, 0.03f, 0.03f);

	[SerializeField]
	public bool Draw = true;

	private void OnDrawGizmos()
	{
	}
}
public class BoneMapping : MonoBehaviour
{
	[SerializeField]
	public GameObject[] Bones = (GameObject[])(object)new GameObject[55];

	[SerializeField]
	public AvatarDescription Description;

	private void Reset()
	{
		GetBones();
	}

	private void GetBones()
	{
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Invalid comparison between Unknown and I4
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		Bones = (GameObject[])(object)new GameObject[55];
		Animator component = ((Component)this).GetComponent<Animator>();
		if (!((Object)(object)component != (Object)null) || !((Object)(object)component.avatar != (Object)null))
		{
			return;
		}
		HumanBodyBones[] values = CachedEnum.GetValues<HumanBodyBones>();
		foreach (HumanBodyBones val in values)
		{
			if ((int)val != 55)
			{
				Transform boneTransform = component.GetBoneTransform(val);
				if ((Object)(object)boneTransform != (Object)null)
				{
					Bones[val] = ((Component)boneTransform).gameObject;
				}
				continue;
			}
			break;
		}
	}

	public void GuessBoneMapping()
	{
		GameObject val = Bones[0];
		if ((Object)(object)val == (Object)null)
		{
			Debug.LogWarning((object)"require hips");
			return;
		}
		Skeleton skeleton = new BvhSkeletonEstimator().Detect(val.transform);
		Transform[] array = val.transform.Traverse().ToArray();
		for (int i = 0; i < 55; i++)
		{
			int boneIndex = skeleton.GetBoneIndex((HumanBodyBones)i);
			if (boneIndex >= 0)
			{
				Bones[i] = ((Component)array[boneIndex]).gameObject;
			}
		}
	}

	public void EnsureTPose()
	{
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: 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_00ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: 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_0103: 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_0114: 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_0127: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: Unknown result type (might be due to invalid IL or missing references)
		Dictionary<HumanBodyBones, Transform> dictionary = (from x in Bones.Select((GameObject x, int i) => new { i, x })
			where (Object)(object)x.x != (Object)null
			select x).ToDictionary(x => (HumanBodyBones)x.i, x => x.x.transform);
		Vector3 val = dictionary[(HumanBodyBones)15].position - dictionary[(HumanBodyBones)13].position;
		Vector3 normalized = ((Vector3)(ref val)).normalized;
		dictionary[(HumanBodyBones)13].rotation = Quaternion.FromToRotation(normalized, Vector3.left) * dictionary[(HumanBodyBones)13].rotation;
		val = dictionary[(HumanBodyBones)16].position - dictionary[(HumanBodyBones)14].position;
		Vector3 normalized2 = ((Vector3)(ref val)).normalized;
		dictionary[(HumanBodyBones)14].rotation = Quaternion.FromToRotation(normalized2, Vector3.right) * dictionary[(HumanBodyBones)14].rotation;
	}

	public static void SetBonesToDescription(BoneMapping mapping, AvatarDescription description)
	{
		Dictionary<HumanBodyBones, Transform> humanBones = (from x in mapping.Bones.Select((GameObject x, int i) => new { i, x })
			where (Object)(object)x.x != (Object)null
			select x).ToDictionary(x => (HumanBodyBones)x.i, x => x.x.transform);
		description.SetHumanBones(humanBones);
	}

	private void Awake()
	{
		if (Bones == null || Bones.All((GameObject x) => (Object)(object)x == (Object)null))
		{
			GetBones();
		}
	}
}
public class BvhBone : IBone
{
	private List<IBone> _children = new List<IBone>();

	public string Name { get; private set; }

	public Vector3 SkeletonLocalPosition { get; private set; }

	public IBone Parent { get; private set; }

	public IList<IBone> Children => _children;

	public BvhBone(string name, Vector3 position)
	{
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		Name = name;
		SkeletonLocalPosition = position;
	}

	public override string ToString()
	{
		return $"<BvhBone: {Name}>";
	}

	public void Build(Transform t)
	{
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Expected O, but got Unknown
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: 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)
		foreach (Transform item in t)
		{
			Transform val = item;
			BvhBone bvhBone = new BvhBone(((Object)val).name, SkeletonLocalPosition + val.localPosition);
			bvhBone.Parent = this;
			_children.Add(bvhBone);
			bvhBone.Build(val);
		}
	}

	public void Build(BvhNode node)
	{
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		foreach (BvhNode child in node.Children)
		{
			BvhBone bvhBone = new BvhBone(child.Name, SkeletonLocalPosition + child.Offset.ToXReversedVector3());
			bvhBone.Parent = this;
			_children.Add(bvhBone);
			bvhBone.Build(child);
		}
	}

	public IEnumerable<BvhBone> Traverse()
	{
		yield return this;
		foreach (IBone child in Children)
		{
			foreach (IBone item in child.Traverse())
			{
				yield return (BvhBone)item;
			}
		}
	}
}
public static class EnumExtensions
{
	public static string ToStringFromEnum(this HumanBodyBones val, bool compareBoneTrait = false)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Expected I4, but got Unknown
		switch ((int)val)
		{
		case 0:
			return "Hips";
		case 1:
			return "LeftUpperLeg";
		case 2:
			return "RightUpperLeg";
		case 3:
			return "LeftLowerLeg";
		case 4:
			return "RightLowerLeg";
		case 5:
			return "LeftFoot";
		case 6:
			return "RightFoot";
		case 7:
			return "Spine";
		case 8:
			return "Chest";
		case 9:
			return "Neck";
		case 10:
			return "Head";
		case 11:
			return "LeftShoulder";
		case 12:
			return "RightShoulder";
		case 13:
			return "LeftUpperArm";
		case 14:
			return "RightUpperArm";
		case 15:
			return "LeftLowerArm";
		case 16:
			return "RightLowerArm";
		case 17:
			return "LeftHand";
		case 18:
			return "RightHand";
		case 19:
			return "LeftToes";
		case 20:
			return "RightToes";
		case 21:
			return "LeftEye";
		case 22:
			return "RightEye";
		case 23:
			return "Jaw";
		case 24:
			if (!compareBoneTrait)
			{
				return "LeftThumbProximal";
			}
			return "Left Thumb Proximal";
		case 25:
			if (!compareBoneTrait)
			{
				return "LeftThumbIntermediate";
			}
			return "Left Thumb Intermediate";
		case 26:
			if (!compareBoneTrait)
			{
				return "LeftThumbDistal";
			}
			return "Left Thumb Distal";
		case 27:
			if (!compareBoneTrait)
			{
				return "LeftIndexProximal";
			}
			return "Left Index Proximal";
		case 28:
			if (!compareBoneTrait)
			{
				return "LeftIndexIntermediate";
			}
			return "Left Index Intermediate";
		case 29:
			if (!compareBoneTrait)
			{
				return "LeftIndexDistal";
			}
			return "Left Index Distal";
		case 30:
			if (!compareBoneTrait)
			{
				return "LeftMiddleProximal";
			}
			return "Left Middle Proximal";
		case 31:
			if (!compareBoneTrait)
			{
				return "LeftMiddleIntermediate";
			}
			return "Left Middle Intermediate";
		case 32:
			if (!compareBoneTrait)
			{
				return "LeftMiddleDistal";
			}
			return "Left Middle Distal";
		case 33:
			if (!compareBoneTrait)
			{
				return "LeftRingProximal";
			}
			return "Left Ring Proximal";
		case 34:
			if (!compareBoneTrait)
			{
				return "LeftRingIntermediate";
			}
			return "Left Ring Intermediate";
		case 35:
			if (!compareBoneTrait)
			{
				return "LeftRingDistal";
			}
			return "Left Ring Distal";
		case 36:
			if (!compareBoneTrait)
			{
				return "LeftLittleProximal";
			}
			return "Left Little Proximal";
		case 37:
			if (!compareBoneTrait)
			{
				return "LeftLittleIntermediate";
			}
			return "Left Little Intermediate";
		case 38:
			if (!compareBoneTrait)
			{
				return "LeftLittleDistal";
			}
			return "Left Little Distal";
		case 39:
			if (!compareBoneTrait)
			{
				return "RightThumbProximal";
			}
			return "Right Thumb Proximal";
		case 40:
			if (!compareBoneTrait)
			{
				return "RightThumbIntermediate";
			}
			return "Right Thumb Intermediate";
		case 41:
			if (!compareBoneTrait)
			{
				return "RightThumbDistal";
			}
			return "Right Thumb Distal";
		case 42:
			if (!compareBoneTrait)
			{
				return "RightIndexProximal";
			}
			return "Right Index Proximal";
		case 43:
			if (!compareBoneTrait)
			{
				return "RightIndexIntermediate";
			}
			return "Right Index Intermediate";
		case 44:
			if (!compareBoneTrait)
			{
				return "RightIndexDistal";
			}
			return "Right Index Distal";
		case 45:
			if (!compareBoneTrait)
			{
				return "RightMiddleProximal";
			}
			return "Right Middle Proximal";
		case 46:
			if (!compareBoneTrait)
			{
				return "RightMiddleIntermediate";
			}
			return "Right Middle Intermediate";
		case 47:
			if (!compareBoneTrait)
			{
				return "RightMiddleDistal";
			}
			return "Right Middle Distal";
		case 48:
			if (!compareBoneTrait)
			{
				return "RightRingProximal";
			}
			return "Right Ring Proximal";
		case 49:
			if (!compareBoneTrait)
			{
				return "RightRingIntermediate";
			}
			return "Right Ring Intermediate";
		case 50:
			if (!compareBoneTrait)
			{
				return "RightRingDistal";
			}
			return "Right Ring Distal";
		case 51:
			if (!compareBoneTrait)
			{
				return "RightLittleProximal";
			}
			return "Right Little Proximal";
		case 52:
			if (!compareBoneTrait)
			{
				return "RightLittleIntermediate";
			}
			return "Right Little Intermediate";
		case 53:
			if (!compareBoneTrait)
			{
				return "RightLittleDistal";
			}
			return "Right Little Distal";
		case 54:
			return "UpperChest";
		case 55:
			return "LastBone";
		default:
			throw new InvalidOperationException();
		}
	}
}
internal class ForceUniqueName
{
	private HashSet<string> m_uniqueNameSet = new HashSet<string>();

	private int m_counter = 1;

	public static void Process(Transform root)
	{
		ForceUniqueName forceUniqueName = new ForceUniqueName();
		Transform[] componentsInChildren = ((Component)root).GetComponentsInChildren<Transform>();
		foreach (Transform t in componentsInChildren)
		{
			forceUniqueName.RenameIfDupName(t);
		}
	}

	public void RenameIfDupName(Transform t)
	{
		if (!m_uniqueNameSet.Contains(((Object)t).name))
		{
			m_uniqueNameSet.Add(((Object)t).name);
			return;
		}
		if ((Object)(object)t.parent != (Object)null && t.childCount == 0)
		{
			string text = ((Object)t.parent).name + "-" + ((Object)t).name;
			if (!m_uniqueNameSet.Contains(text))
			{
				Debug.LogWarning((object)("force rename !!: " + ((Object)t).name + " => " + text));
				((Object)t).name = text;
				m_uniqueNameSet.Add(text);
				return;
			}
		}
		for (int i = 0; i < 100; i++)
		{
			string text2 = $"{((Object)t).name}{m_counter++}";
			if (!m_uniqueNameSet.Contains(text2))
			{
				Debug.LogWarning((object)("force rename: " + ((Object)t).name + " => " + text2), (Object)(object)t);
				((Object)t).name = text2;
				m_uniqueNameSet.Add(text2);
				return;
			}
		}
		throw new NotImplementedException();
	}
}
public class Bvh
{
	public struct PathWithProperty
	{
		public string Path;

		public string Property;

		public bool IsLocation;
	}

	private int m_frames;

	public BvhNode Root { get; private set; }

	public TimeSpan FrameTime { get; private set; }

	public BvhChannelCurve[] Channels { get; private set; }

	public int FrameCount => m_frames;

	public bool TryGetPathWithPropertyFromChannel(BvhChannelCurve channel, out PathWithProperty pathWithProp)
	{
		int num = Channels.ToList().IndexOf(channel);
		if (num == -1)
		{
			pathWithProp = default(PathWithProperty);
			return false;
		}
		foreach (BvhNode item in Root.Traverse())
		{
			int num2 = 0;
			while (num2 < item.Channels.Length)
			{
				if (num == 0)
				{
					pathWithProp = new PathWithProperty
					{
						Path = GetPath(item),
						Property = item.Channels[num2].ToProperty(),
						IsLocation = item.Channels[num2].IsLocation()
					};
					return true;
				}
				num2++;
				num--;
			}
		}
		throw new BvhException("channel is not found");
	}

	public string GetPath(BvhNode node)
	{
		List<string> list = new List<string> { node.Name };
		BvhNode bvhNode = node;
		while (bvhNode != null)
		{
			bvhNode = GetParent(bvhNode);
			if (bvhNode != null)
			{
				list.Insert(0, bvhNode.Name);
			}
		}
		return string.Join("/", list.ToArray());
	}

	private BvhNode GetParent(BvhNode node)
	{
		foreach (BvhNode item in Root.Traverse())
		{
			if (item.Children.Contains(node))
			{
				return item;
			}
		}
		return null;
	}

	public BvhChannelCurve GetChannel(BvhNode target, BvhChannel channel)
	{
		int num = 0;
		foreach (BvhNode item in Root.Traverse())
		{
			int num2 = 0;
			while (num2 < item.Channels.Length)
			{
				if (item == target && item.Channels[num2] == channel)
				{
					return Channels[num];
				}
				num2++;
				num++;
			}
		}
		throw new BvhException("channel is not found");
	}

	public override string ToString()
	{
		return $"{Root.Traverse().Count()}nodes, {Channels.Length}channels, {m_frames}frames, {(double)m_frames * FrameTime.TotalSeconds:0.00}seconds";
	}

	public Bvh(BvhNode root, int frames, float seconds)
	{
		Root = root;
		FrameTime = TimeSpan.FromSeconds(seconds);
		m_frames = frames;
		int count = (from x in Root.Traverse()
			where x.Channels != null
			select x.Channels.Length).Sum();
		Channels = (from x in Enumerable.Range(0, count)
			select new BvhChannelCurve(frames)).ToArray();
	}

	public void ParseFrame(int frame, string line)
	{
		string[] array = (from x in line.Trim().Split()
			where !string.IsNullOrEmpty(x)
			select x).ToArray();
		if (array.Length != Channels.Length)
		{
			throw new BvhException("frame key count is not match channel count");
		}
		for (int i = 0; i < Channels.Length; i++)
		{
			Channels[i].SetKey(frame, float.Parse(array[i], CultureInfo.InvariantCulture));
		}
	}

	public static Bvh Parse(string src)
	{
		using StringReader stringReader = new StringReader(src);
		if (stringReader.ReadLine() != "HIERARCHY")
		{
			throw new BvhException("not start with HIERARCHY");
		}
		BvhNode bvhNode = ParseNode(stringReader);
		if (bvhNode == null)
		{
			return null;
		}
		int num = 0;
		float seconds = 0f;
		if (stringReader.ReadLine() == "MOTION")
		{
			string[] array = stringReader.ReadLine().Split(':');
			if (array[0] != "Frames")
			{
				throw new BvhException("Frames is not found");
			}
			num = int.Parse(array[1]);
			string[] array2 = stringReader.ReadLine().Split(':');
			if (array2[0] != "Frame Time")
			{
				throw new BvhException("Frame Time is not found");
			}
			seconds = float.Parse(array2[1], CultureInfo.InvariantCulture);
		}
		Bvh bvh = new Bvh(bvhNode, num, seconds);
		for (int i = 0; i < num; i++)
		{
			string line = stringReader.ReadLine();
			bvh.ParseFrame(i, line);
		}
		return bvh;
	}

	private static BvhNode ParseNode(StringReader r, int level = 0)
	{
		string text = r.ReadLine().Trim();
		string[] array = text.Split();
		if (array.Length != 2)
		{
			if (array.Length == 1 && array[0] == "}")
			{
				return null;
			}
			throw new BvhException($"split to {array.Length}({text})");
		}
		BvhNode bvhNode = null;
		if (array[0] == "ROOT")
		{
			if (level != 0)
			{
				throw new BvhException("nested ROOT");
			}
			bvhNode = new BvhNode(array[1]);
		}
		else if (array[0] == "JOINT")
		{
			if (level == 0)
			{
				throw new BvhException("should ROOT, but JOINT");
			}
			bvhNode = new BvhNode(array[1]);
		}
		else
		{
			if (!(array[0] == "End"))
			{
				throw new BvhException("unknown type: " + array[0]);
			}
			if (level == 0)
			{
				throw new BvhException("End in level 0");
			}
			bvhNode = new BvhEndSite();
		}
		if (r.ReadLine().Trim() != "{")
		{
			throw new BvhException("'{' is not found");
		}
		bvhNode.Parse(r);
		while (true)
		{
			BvhNode bvhNode2 = ParseNode(r, level + 1);
			if (bvhNode2 == null)
			{
				break;
			}
			if (!(bvhNode2 is BvhEndSite))
			{
				bvhNode.Children.Add(bvhNode2);
			}
		}
		return bvhNode;
	}
}
public enum BvhChannel
{
	Xposition,
	Yposition,
	Zposition,
	Xrotation,
	Yrotation,
	Zrotation
}
public static class BvhChannelExtensions
{
	public static string ToProperty(this BvhChannel ch)
	{
		return ch switch
		{
			BvhChannel.Xposition => "localPosition.x", 
			BvhChannel.Yposition => "localPosition.y", 
			BvhChannel.Zposition => "localPosition.z", 
			BvhChannel.Xrotation => "localEulerAnglesBaked.x", 
			BvhChannel.Yrotation => "localEulerAnglesBaked.y", 
			BvhChannel.Zrotation => "localEulerAnglesBaked.z", 
			_ => throw new BvhException("no property for " + ch), 
		};
	}

	public static bool IsLocation(this BvhChannel ch)
	{
		switch (ch)
		{
		case BvhChannel.Xposition:
		case BvhChannel.Yposition:
		case BvhChannel.Zposition:
			return true;
		case BvhChannel.Xrotation:
		case BvhChannel.Yrotation:
		case BvhChannel.Zrotation:
			return false;
		default:
			throw new BvhException("no property for " + ch);
		}
	}
}
public class BvhChannelCurve
{
	public float[] Keys { get; private set; }

	public BvhChannelCurve(int frameCount)
	{
		Keys = new float[frameCount];
	}

	public void SetKey(int frame, float value)
	{
		Keys[frame] = value;
	}
}
public class BvhEndSite : BvhNode
{
	public BvhEndSite()
		: base("")
	{
	}

	public override void Parse(StringReader r)
	{
		r.ReadLine();
	}
}
public class BvhException : Exception
{
	public BvhException(string msg)
		: base(msg)
	{
	}
}
public class BvhNode
{
	public string Name { get; private set; }

	public Vector3 Offset { get; private set; }

	public BvhChannel[] Channels { get; private set; }

	public List<BvhNode> Children { get; private set; }

	public BvhNode(string name)
	{
		Name = name;
		Children = new List<BvhNode>();
	}

	public int GetChannelIndex(BvhChannel channel)
	{
		for (int i = 0; i < Channels.Length; i++)
		{
			if (channel == Channels[i])
			{
				return i;
			}
		}
		throw new KeyNotFoundException();
	}

	public virtual void Parse(StringReader r)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		Offset = ParseOffset(r.ReadLine());
		Channels = ParseChannel(r.ReadLine());
	}

	private static Vector3 ParseOffset(string line)
	{
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		string[] array = line.Trim().Split();
		if (array[0] != "OFFSET")
		{
			throw new BvhException("OFFSET is not found");
		}
		float[] array2 = (from x in array.Skip(1)
			where !string.IsNullOrEmpty(x)
			select float.Parse(x, CultureInfo.InvariantCulture)).ToArray();
		return new Vector3(array2[0], array2[1], array2[2]);
	}

	private static BvhChannel[] ParseChannel(string line)
	{
		string[] array = line.Trim().Split();
		if (array[0] != "CHANNELS")
		{
			throw new BvhException("CHANNELS is not found");
		}
		if (int.Parse(array[1]) + 2 != array.Length)
		{
			throw new BvhException("channel count is not match with split count");
		}
		return (from x in array.Skip(2)
			select (BvhChannel)Enum.Parse(typeof(BvhChannel), x)).ToArray();
	}

	public IEnumerable<BvhNode> Traverse()
	{
		yield return this;
		foreach (BvhNode child in Children)
		{
			foreach (BvhNode item in child.Traverse())
			{
				yield return item;
			}
		}
	}
}
[DisallowMultipleComponent]
public class Humanoid : MonoBehaviour
{
	public struct Validation
	{
		public readonly string Message;

		public readonly bool IsError;

		public Validation(string message, bool isError)
		{
			Message = message;
			IsError = isError;
		}
	}

	[SerializeField]
	private Transform m_Hips;

	[SerializeField]
	private Transform m_LeftUpperLeg;

	[SerializeField]
	private Transform m_RightUpperLeg;

	[SerializeField]
	private Transform m_LeftLowerLeg;

	[SerializeField]
	private Transform m_RightLowerLeg;

	[SerializeField]
	private Transform m_LeftFoot;

	[SerializeField]
	private Transform m_RightFoot;

	[SerializeField]
	private Transform m_LeftToes;

	[SerializeField]
	private Transform m_RightToes;

	[SerializeField]
	private Transform m_Spine;

	[SerializeField]
	private Transform m_Chest;

	[SerializeField]
	private Transform m_UpperChest;

	[SerializeField]
	private Transform m_Neck;

	[SerializeField]
	private Transform m_Head;

	[SerializeField]
	private Transform m_LeftEye;

	[SerializeField]
	private Transform m_RightEye;

	[SerializeField]
	private Transform m_Jaw;

	[SerializeField]
	private Transform m_LeftShoulder;

	[SerializeField]
	private Transform m_RightShoulder;

	[SerializeField]
	private Transform m_LeftUpperArm;

	[SerializeField]
	private Transform m_RightUpperArm;

	[SerializeField]
	private Transform m_LeftLowerArm;

	[SerializeField]
	private Transform m_RightLowerArm;

	[SerializeField]
	private Transform m_LeftHand;

	[SerializeField]
	private Transform m_RightHand;

	[SerializeField]
	private Transform m_LeftThumbProximal;

	[SerializeField]
	private Transform m_LeftThumbIntermediate;

	[SerializeField]
	private Transform m_LeftThumbDistal;

	[SerializeField]
	private Transform m_LeftIndexProximal;

	[SerializeField]
	private Transform m_LeftIndexIntermediate;

	[SerializeField]
	private Transform m_LeftIndexDistal;

	[SerializeField]
	private Transform m_LeftMiddleProximal;

	[SerializeField]
	private Transform m_LeftMiddleIntermediate;

	[SerializeField]
	private Transform m_LeftMiddleDistal;

	[SerializeField]
	private Transform m_LeftRingProximal;

	[SerializeField]
	private Transform m_LeftRingIntermediate;

	[SerializeField]
	private Transform m_LeftRingDistal;

	[SerializeField]
	private Transform m_LeftLittleProximal;

	[SerializeField]
	private Transform m_LeftLittleIntermediate;

	[SerializeField]
	private Transform m_LeftLittleDistal;

	[SerializeField]
	private Transform m_RightThumbProximal;

	[SerializeField]
	private Transform m_RightThumbIntermediate;

	[SerializeField]
	private Transform m_RightThumbDistal;

	[SerializeField]
	private Transform m_RightIndexProximal;

	[SerializeField]
	private Transform m_RightIndexIntermediate;

	[SerializeField]
	private Transform m_RightIndexDistal;

	[SerializeField]
	private Transform m_RightMiddleProximal;

	[SerializeField]
	private Transform m_RightMiddleIntermediate;

	[SerializeField]
	private Transform m_RightMiddleDistal;

	[SerializeField]
	private Transform m_RightRingProximal;

	[SerializeField]
	private Transform m_RightRingIntermediate;

	[SerializeField]
	private Transform m_RightRingDistal;

	[SerializeField]
	private Transform m_RightLittleProximal;

	[SerializeField]
	private Transform m_RightLittleIntermediate;

	[SerializeField]
	private Transform m_RightLittleDistal;

	public Transform Hips => m_Hips;

	public Transform LeftUpperLeg => m_LeftUpperLeg;

	public Transform RightUpperLeg => m_RightUpperLeg;

	public Transform LeftLowerLeg => m_LeftLowerLeg;

	public Transform RightLowerLeg => m_RightLowerLeg;

	public Transform LeftFoot => m_LeftFoot;

	public Transform RightFoot => m_RightFoot;

	public Transform LeftToes => m_LeftToes;

	public Transform RightToes => m_RightToes;

	public Transform Spine => m_Spine;

	public Transform Chest => m_Chest;

	public Transform UpperChest => m_UpperChest;

	public Transform Neck => m_Neck;

	public Transform Head => m_Head;

	public Transform LeftEye => m_LeftEye;

	public Transform RightEye => m_RightEye;

	public Transform Jaw => m_Jaw;

	public Transform LeftShoulder => m_LeftShoulder;

	public Transform RightShoulder => m_RightShoulder;

	public Transform LeftUpperArm => m_LeftUpperArm;

	public Transform RightUpperArm => m_RightUpperArm;

	public Transform LeftLowerArm => m_LeftLowerArm;

	public Transform RightLowerArm => m_RightLowerArm;

	public Transform LeftHand => m_LeftHand;

	public Transform RightHand => m_RightHand;

	public Transform LeftThumbProximal => m_LeftThumbProximal;

	public Transform LeftThumbIntermediate => m_LeftThumbIntermediate;

	public Transform LeftThumbDistal => m_LeftThumbDistal;

	public Transform LeftIndexProximal => m_LeftIndexProximal;

	public Transform LeftIndexIntermediate => m_LeftIndexIntermediate;

	public Transform LeftIndexDistal => m_LeftIndexDistal;

	public Transform LeftMiddleProximal => m_LeftMiddleProximal;

	public Transform LeftMiddleIntermediate => m_LeftMiddleIntermediate;

	public Transform LeftMiddleDistal => m_LeftMiddleDistal;

	public Transform LeftRingProximal => m_LeftRingProximal;

	public Transform LeftRingIntermediate => m_LeftRingIntermediate;

	public Transform LeftRingDistal => m_LeftRingDistal;

	public Transform LeftLittleProximal => m_LeftLittleProximal;

	public Transform LeftLittleIntermediate => m_LeftLittleIntermediate;

	public Transform LeftLittleDistal => m_LeftLittleDistal;

	public Transform RightThumbProximal => m_RightThumbProximal;

	public Transform RightThumbIntermediate => m_RightThumbIntermediate;

	public Transform RightThumbDistal => m_RightThumbDistal;

	public Transform RightIndexProximal => m_RightIndexProximal;

	public Transform RightIndexIntermediate => m_RightIndexIntermediate;

	public Transform RightIndexDistal => m_RightIndexDistal;

	public Transform RightMiddleProximal => m_RightMiddleProximal;

	public Transform RightMiddleIntermediate => m_RightMiddleIntermediate;

	public Transform RightMiddleDistal => m_RightMiddleDistal;

	public Transform RightRingProximal => m_RightRingProximal;

	public Transform RightRingIntermediate => m_RightRingIntermediate;

	public Transform RightRingDistal => m_RightRingDistal;

	public Transform RightLittleProximal => m_RightLittleProximal;

	public Transform RightLittleIntermediate => m_RightLittleIntermediate;

	public Transform RightLittleDistal => m_RightLittleDistal;

	public IEnumerable<(Transform, HumanBodyBones)> BoneMap
	{
		get
		{
			if ((Object)(object)Hips != (Object)null)
			{
				yield return (Hips, (HumanBodyBones)0);
			}
			if ((Object)(object)LeftUpperLeg != (Object)null)
			{
				yield return (LeftUpperLeg, (HumanBodyBones)1);
			}
			if ((Object)(object)RightUpperLeg != (Object)null)
			{
				yield return (RightUpperLeg, (HumanBodyBones)2);
			}
			if ((Object)(object)LeftLowerLeg != (Object)null)
			{
				yield return (LeftLowerLeg, (HumanBodyBones)3);
			}
			if ((Object)(object)RightLowerLeg != (Object)null)
			{
				yield return (RightLowerLeg, (HumanBodyBones)4);
			}
			if ((Object)(object)LeftFoot != (Object)null)
			{
				yield return (LeftFoot, (HumanBodyBones)5);
			}
			if ((Object)(object)RightFoot != (Object)null)
			{
				yield return (RightFoot, (HumanBodyBones)6);
			}
			if ((Object)(object)LeftToes != (Object)null)
			{
				yield return (LeftToes, (HumanBodyBones)19);
			}
			if ((Object)(object)RightToes != (Object)null)
			{
				yield return (RightToes, (HumanBodyBones)20);
			}
			if ((Object)(object)Spine != (Object)null)
			{
				yield return (Spine, (HumanBodyBones)7);
			}
			if ((Object)(object)Chest != (Object)null)
			{
				yield return (Chest, (HumanBodyBones)8);
			}
			if ((Object)(object)UpperChest != (Object)null)
			{
				yield return (UpperChest, (HumanBodyBones)54);
			}
			if ((Object)(object)Neck != (Object)null)
			{
				yield return (Neck, (HumanBodyBones)9);
			}
			if ((Object)(object)Head != (Object)null)
			{
				yield return (Head, (HumanBodyBones)10);
			}
			if ((Object)(object)LeftEye != (Object)null)
			{
				yield return (LeftEye, (HumanBodyBones)21);
			}
			if ((Object)(object)RightEye != (Object)null)
			{
				yield return (RightEye, (HumanBodyBones)22);
			}
			if ((Object)(object)Jaw != (Object)null)
			{
				yield return (Jaw, (HumanBodyBones)23);
			}
			if ((Object)(object)LeftShoulder != (Object)null)
			{
				yield return (LeftShoulder, (HumanBodyBones)11);
			}
			if ((Object)(object)RightShoulder != (Object)null)
			{
				yield return (RightShoulder, (HumanBodyBones)12);
			}
			if ((Object)(object)LeftUpperArm != (Object)null)
			{
				yield return (LeftUpperArm, (HumanBodyBones)13);
			}
			if ((Object)(object)RightUpperArm != (Object)null)
			{
				yield return (RightUpperArm, (HumanBodyBones)14);
			}
			if ((Object)(object)LeftLowerArm != (Object)null)
			{
				yield return (LeftLowerArm, (HumanBodyBones)15);
			}
			if ((Object)(object)RightLowerArm != (Object)null)
			{
				yield return (RightLowerArm, (HumanBodyBones)16);
			}
			if ((Object)(object)LeftHand != (Object)null)
			{
				yield return (LeftHand, (HumanBodyBones)17);
			}
			if ((Object)(object)RightHand != (Object)null)
			{
				yield return (RightHand, (HumanBodyBones)18);
			}
			if ((Object)(object)LeftThumbProximal != (Object)null)
			{
				yield return (LeftThumbProximal, (HumanBodyBones)24);
			}
			if ((Object)(object)LeftThumbIntermediate != (Object)null)
			{
				yield return (LeftThumbIntermediate, (HumanBodyBones)25);
			}
			if ((Object)(object)LeftThumbDistal != (Object)null)
			{
				yield return (LeftThumbDistal, (HumanBodyBones)26);
			}
			if ((Object)(object)LeftIndexProximal != (Object)null)
			{
				yield return (LeftIndexProximal, (HumanBodyBones)27);
			}
			if ((Object)(object)LeftIndexIntermediate != (Object)null)
			{
				yield return (LeftIndexIntermediate, (HumanBodyBones)28);
			}
			if ((Object)(object)LeftIndexDistal != (Object)null)
			{
				yield return (LeftIndexDistal, (HumanBodyBones)29);
			}
			if ((Object)(object)LeftMiddleProximal != (Object)null)
			{
				yield return (LeftMiddleProximal, (HumanBodyBones)30);
			}
			if ((Object)(object)LeftMiddleIntermediate != (Object)null)
			{
				yield return (LeftMiddleIntermediate, (HumanBodyBones)31);
			}
			if ((Object)(object)LeftMiddleDistal != (Object)null)
			{
				yield return (LeftMiddleDistal, (HumanBodyBones)32);
			}
			if ((Object)(object)LeftRingProximal != (Object)null)
			{
				yield return (LeftRingProximal, (HumanBodyBones)33);
			}
			if ((Object)(object)LeftRingIntermediate != (Object)null)
			{
				yield return (LeftRingIntermediate, (HumanBodyBones)34);
			}
			if ((Object)(object)LeftRingDistal != (Object)null)
			{
				yield return (LeftRingDistal, (HumanBodyBones)35);
			}
			if ((Object)(object)LeftLittleProximal != (Object)null)
			{
				yield return (LeftLittleProximal, (HumanBodyBones)36);
			}
			if ((Object)(object)LeftLittleIntermediate != (Object)null)
			{
				yield return (LeftLittleIntermediate, (HumanBodyBones)37);
			}
			if ((Object)(object)LeftLittleDistal != (Object)null)
			{
				yield return (LeftLittleDistal, (HumanBodyBones)38);
			}
			if ((Object)(object)RightThumbProximal != (Object)null)
			{
				yield return (RightThumbProximal, (HumanBodyBones)39);
			}
			if ((Object)(object)RightThumbIntermediate != (Object)null)
			{
				yield return (RightThumbIntermediate, (HumanBodyBones)40);
			}
			if ((Object)(object)RightThumbDistal != (Object)null)
			{
				yield return (RightThumbDistal, (HumanBodyBones)41);
			}
			if ((Object)(object)RightIndexProximal != (Object)null)
			{
				yield return (RightIndexProximal, (HumanBodyBones)42);
			}
			if ((Object)(object)RightIndexIntermediate != (Object)null)
			{
				yield return (RightIndexIntermediate, (HumanBodyBones)43);
			}
			if ((Object)(object)RightIndexDistal != (Object)null)
			{
				yield return (RightIndexDistal, (HumanBodyBones)44);
			}
			if ((Object)(object)RightMiddleProximal != (Object)null)
			{
				yield return (RightMiddleProximal, (HumanBodyBones)45);
			}
			if ((Object)(object)RightMiddleIntermediate != (Object)null)
			{
				yield return (RightMiddleIntermediate, (HumanBodyBones)46);
			}
			if ((Object)(object)RightMiddleDistal != (Object)null)
			{
				yield return (RightMiddleDistal, (HumanBodyBones)47);
			}
			if ((Object)(object)RightRingProximal != (Object)null)
			{
				yield return (RightRingProximal, (HumanBodyBones)48);
			}
			if ((Object)(object)RightRingIntermediate != (Object)null)
			{
				yield return (RightRingIntermediate, (HumanBodyBones)49);
			}
			if ((Object)(object)RightRingDistal != (Object)null)
			{
				yield return (RightRingDistal, (HumanBodyBones)50);
			}
			if ((Object)(object)RightLittleProximal != (Object)null)
			{
				yield return (RightLittleProximal, (HumanBodyBones)51);
			}
			if ((Object)(object)RightLittleIntermediate != (Object)null)
			{
				yield return (RightLittleIntermediate, (HumanBodyBones)52);
			}
			if ((Object)(object)RightLittleDistal != (Object)null)
			{
				yield return (RightLittleDistal, (HumanBodyBones)53);
			}
		}
	}

	private void Reset()
	{
		AssignBonesFromAnimator();
	}

	private IEnumerable<Validation> Required(params (string, Transform)[] props)
	{
		for (int i = 0; i < props.Length; i++)
		{
			(string, Transform) tuple = props[i];
			if ((Object)(object)tuple.Item2 == (Object)null)
			{
				var (text, _) = tuple;
				if (text.StartsWith("m_"))
				{
					text = text.Substring(2);
				}
				yield return new Validation(text + " is Required", isError: true);
			}
		}
	}

	private static Vector3 GetForward(Transform l, Transform r)
	{
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: 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_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)l == (Object)null || (Object)(object)r == (Object)null)
		{
			return Vector3.zero;
		}
		Vector3 val = r.position - l.position;
		return Vector3.Cross(((Vector3)(ref val)).normalized, Vector3.up);
	}

	public Vector3 GetForward()
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		return GetForward(m_LeftUpperLeg, m_RightUpperLeg);
	}

	public IEnumerable<Validation> Validate()
	{
		foreach (Validation item in Required(("m_Hips", m_Hips), ("m_Spine", m_Spine), ("m_Head", m_Head), ("m_LeftUpperLeg", m_LeftUpperLeg), ("m_LeftLowerLeg", m_LeftLowerLeg), ("m_LeftFoot", m_LeftFoot), ("m_RightUpperLeg", m_RightUpperLeg), ("m_RightLowerLeg", m_RightLowerLeg), ("m_RightFoot", m_RightFoot), ("m_LeftUpperArm", m_LeftUpperArm), ("m_LeftLowerArm", m_LeftLowerArm), ("m_LeftHand", m_LeftHand), ("m_RightUpperArm", m_RightUpperArm), ("m_RightLowerArm", m_RightLowerArm), ("m_RightHand", m_RightHand)))
		{
			yield return item;
		}
	}

	public Avatar CreateAvatar()
	{
		return HumanoidLoader.LoadHumanoidAvatar(((Component)this).transform, BoneMap);
	}

	public Transform GetBoneTransform(HumanBodyBones bone)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e2: Expected I4, but got Unknown
		return (Transform)((int)bone switch
		{
			0 => Hips, 
			1 => LeftUpperLeg, 
			2 => RightUpperLeg, 
			3 => LeftLowerLeg, 
			4 => RightLowerLeg, 
			5 => LeftFoot, 
			6 => RightFoot, 
			19 => LeftToes, 
			20 => RightToes, 
			7 => Spine, 
			8 => Chest, 
			54 => UpperChest, 
			9 => Neck, 
			10 => Head, 
			21 => LeftEye, 
			22 => RightEye, 
			23 => Jaw, 
			11 => LeftShoulder, 
			12 => RightShoulder, 
			13 => LeftUpperArm, 
			14 => RightUpperArm, 
			15 => LeftLowerArm, 
			16 => RightLowerArm, 
			17 => LeftHand, 
			18 => RightHand, 
			24 => LeftThumbProximal, 
			25 => LeftThumbIntermediate, 
			26 => LeftThumbDistal, 
			27 => LeftIndexProximal, 
			28 => LeftIndexIntermediate, 
			29 => LeftIndexDistal, 
			30 => LeftMiddleProximal, 
			31 => LeftMiddleIntermediate, 
			32 => LeftMiddleDistal, 
			33 => LeftRingProximal, 
			34 => LeftRingIntermediate, 
			35 => LeftRingDistal, 
			36 => LeftLittleProximal, 
			37 => LeftLittleIntermediate, 
			38 => LeftLittleDistal, 
			39 => RightThumbProximal, 
			40 => RightThumbIntermediate, 
			41 => RightThumbDistal, 
			42 => RightIndexProximal, 
			43 => RightIndexIntermediate, 
			44 => RightIndexDistal, 
			45 => RightMiddleProximal, 
			46 => RightMiddleIntermediate, 
			47 => RightMiddleDistal, 
			48 => RightRingProximal, 
			49 => RightRingIntermediate, 
			50 => RightRingDistal, 
			51 => RightLittleProximal, 
			52 => RightLittleIntermediate, 
			53 => RightLittleDistal, 
			_ => null, 
		});
	}

	public void AssignBones(IEnumerable<(HumanBodyBones, Transform)> nodes)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: 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_0022: Invalid comparison between Unknown and I4
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_010f: Expected I4, but got Unknown
		foreach (var (val, val2) in nodes)
		{
			if ((int)val != 55 && val2 != null)
			{
				switch ((int)val)
				{
				case 0:
					m_Hips = val2;
					break;
				case 1:
					m_LeftUpperLeg = val2;
					break;
				case 2:
					m_RightUpperLeg = val2;
					break;
				case 3:
					m_LeftLowerLeg = val2;
					break;
				case 4:
					m_RightLowerLeg = val2;
					break;
				case 5:
					m_LeftFoot = val2;
					break;
				case 6:
					m_RightFoot = val2;
					break;
				case 19:
					m_LeftToes = val2;
					break;
				case 20:
					m_RightToes = val2;
					break;
				case 7:
					m_Spine = val2;
					break;
				case 8:
					m_Chest = val2;
					break;
				case 54:
					m_UpperChest = val2;
					break;
				case 9:
					m_Neck = val2;
					break;
				case 10:
					m_Head = val2;
					break;
				case 21:
					m_LeftEye = val2;
					break;
				case 22:
					m_RightEye = val2;
					break;
				case 23:
					m_Jaw = val2;
					break;
				case 11:
					m_LeftShoulder = val2;
					break;
				case 12:
					m_RightShoulder = val2;
					break;
				case 13:
					m_LeftUpperArm = val2;
					break;
				case 14:
					m_RightUpperArm = val2;
					break;
				case 15:
					m_LeftLowerArm = val2;
					break;
				case 16:
					m_RightLowerArm = val2;
					break;
				case 17:
					m_LeftHand = val2;
					break;
				case 18:
					m_RightHand = val2;
					break;
				case 24:
					m_LeftThumbProximal = val2;
					break;
				case 25:
					m_LeftThumbIntermediate = val2;
					break;
				case 26:
					m_LeftThumbDistal = val2;
					break;
				case 27:
					m_LeftIndexProximal = val2;
					break;
				case 28:
					m_LeftIndexIntermediate = val2;
					break;
				case 29:
					m_LeftIndexDistal = val2;
					break;
				case 30:
					m_LeftMiddleProximal = val2;
					break;
				case 31:
					m_LeftMiddleIntermediate = val2;
					break;
				case 32:
					m_LeftMiddleDistal = val2;
					break;
				case 33:
					m_LeftRingProximal = val2;
					break;
				case 34:
					m_LeftRingIntermediate = val2;
					break;
				case 35:
					m_LeftRingDistal = val2;
					break;
				case 36:
					m_LeftLittleProximal = val2;
					break;
				case 37:
					m_LeftLittleIntermediate = val2;
					break;
				case 38:
					m_LeftLittleDistal = val2;
					break;
				case 39:
					m_RightThumbProximal = val2;
					break;
				case 40:
					m_RightThumbIntermediate = val2;
					break;
				case 41:
					m_RightThumbDistal = val2;
					break;
				case 42:
					m_RightIndexProximal = val2;
					break;
				case 43:
					m_RightIndexIntermediate = val2;
					break;
				case 44:
					m_RightIndexDistal = val2;
					break;
				case 45:
					m_RightMiddleProximal = val2;
					break;
				case 46:
					m_RightMiddleIntermediate = val2;
					break;
				case 47:
					m_RightMiddleDistal = val2;
					break;
				case 48:
					m_RightRingProximal = val2;
					break;
				case 49:
					m_RightRingIntermediate = val2;
					break;
				case 50:
					m_RightRingDistal = val2;
					break;
				case 51:
					m_RightLittleProximal = val2;
					break;
				case 52:
					m_RightLittleIntermediate = val2;
					break;
				case 53:
					m_RightLittleDistal = val2;
					break;
				}
			}
		}
	}

	public bool AssignBonesFromAnimator()
	{
		Animator animator = ((Component)this).GetComponent<Animator>();
		if ((Object)(object)animator == (Object)null)
		{
			return false;
		}
		Avatar avatar = animator.avatar;
		if ((Object)(object)avatar == (Object)null)
		{
			return false;
		}
		if (!avatar.isValid)
		{
			return false;
		}
		if (!avatar.isHuman)
		{
			return false;
		}
		HumanBodyBones[] values = CachedEnum.GetValues<HumanBodyBones>();
		AssignBones(values.Select((HumanBodyBones x) => ((HumanBodyBones, Transform))(((int)x == 55) ? ((HumanBodyBones)55, (Transform)null) : ((HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), ((object)(HumanBodyBones)(ref x)).ToString(), ignoreCase: true), animator.GetBoneTransform(x)))));
		return true;
	}

	public bool TryGetBoneForTransform(Transform t, out HumanBodyBones bone)
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Expected I4, but got Unknown
		foreach (var (val, val2) in BoneMap)
		{
			if ((Object)(object)val == (Object)(object)t)
			{
				bone = (HumanBodyBones)(int)val2;
				return true;
			}
		}
		bone = (HumanBodyBones)0;
		return false;
	}
}
public static class HumanoidLoader
{
	private static readonly Dictionary<HumanBodyBones, string> s_humanTranitBoneNameMap = HumanTrait.BoneName.ToDictionary((string x) => TraitToHumanBone(x), (string x) => x);

	public static Avatar LoadHumanoidAvatar(Transform root, IEnumerable<(Transform, HumanBodyBones)> boneMap)
	{
		//IL_0008: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		ForceUniqueName.Process(root);
		HumanDescription val = default(HumanDescription);
		val.skeleton = (from x in ((Component)root).GetComponentsInChildren<Transform>()
			select x.ToSkeletonBone()).ToArray();
		val.human = boneMap.Select(delegate((Transform, HumanBodyBones) x)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: 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_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			HumanBone result = default(HumanBone);
			((HumanBone)(ref result)).boneName = ((Object)x.Item1).name;
			((HumanBone)(ref result)).humanName = s_humanTranitBoneNameMap[x.Item2];
			HumanLimit limit = default(HumanLimit);
			((HumanLimit)(ref limit)).useDefaultValues = true;
			result.limit = limit;
			return result;
		}).ToArray();
		((HumanDescription)(ref val)).armStretch = 0.05f;
		((HumanDescription)(ref val)).legStretch = 0.05f;
		((HumanDescription)(ref val)).upperArmTwist = 0.5f;
		((HumanDescription)(ref val)).lowerArmTwist = 0.5f;
		((HumanDescription)(ref val)).upperLegTwist = 0.5f;
		((HumanDescription)(ref val)).lowerLegTwist = 0.5f;
		((HumanDescription)(ref val)).feetSpacing = 0f;
		((HumanDescription)(ref val)).hasTranslationDoF = false;
		HumanDescription val2 = val;
		return AvatarBuilder.BuildHumanAvatar(((Component)root).gameObject, val2);
	}

	private static HumanBodyBones TraitToHumanBone(string x)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		return (HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), x.Replace(" ", ""), ignoreCase: true);
	}
}
public class HumanPoseClip : ScriptableObject
{
	public const string TPoseResourcePath = "UniHumanoid/T-Pose.pose";

	public Vector3 bodyPosition;

	public Quaternion bodyRotation;

	public float[] muscles;

	public HumanPose GetPose()
	{
		//IL_0002: 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_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		HumanPose result = default(HumanPose);
		result.bodyPosition = bodyPosition;
		result.bodyRotation = bodyRotation;
		result.muscles = muscles;
		return result;
	}

	public void ApplyPose(ref HumanPose pose)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: 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_0013: Unknown result type (might be due to invalid IL or missing references)
		bodyPosition = pose.bodyPosition;
		bodyRotation = pose.bodyRotation;
		muscles = (float[])pose.muscles.Clone();
	}
}
public class HumanPoseTransfer : MonoBehaviour
{
	public enum HumanPoseTransferSourceType
	{
		None,
		HumanPoseTransfer,
		HumanPoseClip
	}

	[SerializeField]
	public HumanPoseTransferSourceType SourceType;

	[SerializeField]
	public Avatar Avatar;

	[SerializeField]
	public HumanPoseTransfer Source;

	[SerializeField]
	public HumanPoseClip PoseClip;

	private HumanPoseHandler m_handler;

	private HumanPose m_pose;

	private int m_lastFrameCount = -1;

	public HumanPose CreatePose()
	{
		//IL_000c: 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)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		HumanPoseHandler val = new HumanPoseHandler(Avatar, ((Component)this).transform);
		HumanPose result = default(HumanPose);
		val.GetHumanPose(ref result);
		return result;
	}

	public void SetPose(HumanPose pose)
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		SetPose(Avatar, ((Component)this).transform, pose);
	}

	public static void SetPose(Avatar avatar, Transform transform, HumanPose pose)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		new HumanPoseHandler(avatar, transform).SetHumanPose(ref pose);
	}

	public static void SetTPose(Avatar avatar, Transform transform)
	{
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		HumanPose pose = Resources.Load<HumanPoseClip>("UniHumanoid/T-Pose.pose").GetPose();
		SetPose(avatar, transform, pose);
	}

	private void Reset()
	{
		Animator component = ((Component)this).GetComponent<Animator>();
		if ((Object)(object)component != (Object)null)
		{
			Avatar = component.avatar;
		}
	}

	[ContextMenu("Set T-Pose")]
	private void SetTPose()
	{
		if (!((Object)(object)Avatar == (Object)null))
		{
			SetTPose(Avatar, ((Component)this).transform);
		}
	}

	public void OnEnable()
	{
		Animator component = ((Component)this).GetComponent<Animator>();
		if ((Object)(object)component != (Object)null)
		{
			Avatar = component.avatar;
		}
		Setup();
	}

	public void Setup()
	{
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Expected O, but got Unknown
		if (!((Object)(object)Avatar == (Object)null))
		{
			m_handler = new HumanPoseHandler(Avatar, ((Component)this).transform);
		}
	}

	public bool GetPose(int frameCount, ref HumanPose pose)
	{
		//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_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: 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)
		if ((Object)(object)PoseClip != (Object)null)
		{
			pose = PoseClip.GetPose();
			return true;
		}
		if (m_handler == null)
		{
			pose = m_pose;
			return false;
		}
		if (frameCount != m_lastFrameCount)
		{
			m_handler.GetHumanPose(ref m_pose);
			m_lastFrameCount = frameCount;
		}
		pose = m_pose;
		return true;
	}

	private void Update()
	{
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		switch (SourceType)
		{
		case HumanPoseTransferSourceType.HumanPoseTransfer:
			if ((Object)(object)Source != (Object)null && m_handler != null && Source.GetPose(Time.frameCount, ref m_pose))
			{
				m_handler.SetHumanPose(ref m_pose);
			}
			break;
		case HumanPoseTransferSourceType.HumanPoseClip:
			if ((Object)(object)PoseClip != (Object)null)
			{
				HumanPose pose = PoseClip.GetPose();
				m_handler.SetHumanPose(ref pose);
			}
			break;
		case HumanPoseTransferSourceType.None:
			break;
		}
	}
}
public interface IBone
{
	string Name { get; }

	Vector3 SkeletonLocalPosition { get; }

	IBone Parent { get; }

	IList<IBone> Children { get; }
}
public static class IBoneExtensions
{
	public static IEnumerable<IBone> Traverse(this IBone self)
	{
		yield return self;
		foreach (IBone child in self.Children)
		{
			foreach (IBone item in child.Traverse())
			{
				yield return item;
			}
		}
	}

	public static Vector3 CenterOfDescendant(this IBone self)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: 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_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = Vector3.zero;
		int num = 0;
		foreach (IBone item in self.Traverse())
		{
			val += item.SkeletonLocalPosition;
			num++;
		}
		return val / (float)num;
	}
}
public static class BvhAnimation
{
	private class CurveSet
	{
		private BvhNode Node;

		private Func<float, float, float, Quaternion> EulerToRotation;

		public BvhChannelCurve PositionX;

		public BvhChannelCurve PositionY;

		public BvhChannelCurve PositionZ;

		public BvhChannelCurve RotationX;

		public BvhChannelCurve RotationY;

		public BvhChannelCurve RotationZ;

		public CurveSet(BvhNode node)
		{
			Node = node;
		}

		public Vector3 GetPosition(int i)
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			return new Vector3(PositionX.Keys[i], PositionY.Keys[i], PositionZ.Keys[i]);
		}

		public Quaternion GetRotation(int i)
		{
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			if (EulerToRotation == null)
			{
				EulerToRotation = Node.GetEulerToRotation();
			}
			return EulerToRotation(RotationX.Keys[i], RotationY.Keys[i], RotationZ.Keys[i]);
		}

		private static void AddCurve(Bvh bvh, AnimationClip clip, BvhChannelCurve ch, float scaling)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			if (ch != null)
			{
				Bvh.PathWithProperty pathWithProp = default(Bvh.PathWithProperty);
				bvh.TryGetPathWithPropertyFromChannel(ch, out pathWithProp);
				AnimationCurve val = new AnimationCurve();
				for (int i = 0; i < bvh.FrameCount; i++)
				{
					float num = (float)((double)i * bvh.FrameTime.TotalSeconds);
					float num2 = ch.Keys[i] * scaling;
					val.AddKey(num, num2);
				}
				clip.SetCurve(pathWithProp.Path, typeof(Transform), pathWithProp.Property, val);
			}
		}

		public void AddCurves(Bvh bvh, AnimationClip clip, float scaling)
		{
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: 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_00a8: 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)
			AddCurve(bvh, clip, PositionX, 0f - scaling);
			AddCurve(bvh, clip, PositionY, scaling);
			AddCurve(bvh, clip, PositionZ, scaling);
			Bvh.PathWithProperty pathWithProp = default(Bvh.PathWithProperty);
			bvh.TryGetPathWithPropertyFromChannel(RotationX, out pathWithProp);
			AnimationCurve val = new AnimationCurve();
			AnimationCurve val2 = new AnimationCurve();
			AnimationCurve val3 = new AnimationCurve();
			AnimationCurve val4 = new AnimationCurve();
			for (int i = 0; i < bvh.FrameCount; i++)
			{
				float num = (float)((double)i * bvh.FrameTime.TotalSeconds);
				Quaternion val5 = GetRotation(i).ReverseX();
				val.AddKey(num, val5.x);
				val2.AddKey(num, val5.y);
				val3.AddKey(num, val5.z);
				val4.AddKey(num, val5.w);
			}
			clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.x", val);
			clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.y", val2);
			clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.z", val3);
			clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.w", val4);
		}
	}

	public static AnimationClip CreateAnimationClip(Bvh bvh, float scaling)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Expected O, but got Unknown
		AnimationClip val = new AnimationClip();
		val.legacy = true;
		Dictionary<BvhNode, CurveSet> dictionary = new Dictionary<BvhNode, CurveSet>();
		int num = 0;
		foreach (BvhNode item in bvh.Root.Traverse())
		{
			CurveSet curveSet2 = (dictionary[item] = new CurveSet(item));
			int num2 = 0;
			while (num2 < item.Channels.Length)
			{
				BvhChannelCurve bvhChannelCurve = bvh.Channels[num];
				switch (item.Channels[num2])
				{
				case BvhChannel.Xposition:
					curveSet2.PositionX = bvhChannelCurve;
					break;
				case BvhChannel.Yposition:
					curveSet2.PositionY = bvhChannelCurve;
					break;
				case BvhChannel.Zposition:
					curveSet2.PositionZ = bvhChannelCurve;
					break;
				case BvhChannel.Xrotation:
					curveSet2.RotationX = bvhChannelCurve;
					break;
				case BvhChannel.Yrotation:
					curveSet2.RotationY = bvhChannelCurve;
					break;
				case BvhChannel.Zrotation:
					curveSet2.RotationZ = bvhChannelCurve;
					break;
				default:
					throw new Exception();
				}
				num2++;
				num++;
			}
		}
		foreach (KeyValuePair<BvhNode, CurveSet> item2 in dictionary)
		{
			item2.Value.AddCurves(bvh, val, scaling);
		}
		val.EnsureQuaternionContinuity();
		return val;
	}
}
public static class BvhImporter
{
	[Obsolete("use BvhImporter.Parse(path), then BvhImporter.Load()")]
	public static void Import(BvhImporterContext context)
	{
		context.Parse(context.Path);
		context.Load();
	}
}
[Obsolete("use BvhImporterContext")]
public class ImporterContext : BvhImporterContext
{
}
public class BvhImporterContext
{
	private string m_path;

	public string Source;

	public Bvh Bvh;

	public GameObject Root;

	public List<Transform> Nodes = new List<Transform>();

	public AnimationClip Animation;

	public AvatarDescription AvatarDescription;

	public Avatar Avatar;

	public Mesh Mesh;

	public Material Material;

	public string Path
	{
		get
		{
			return m_path;
		}
		set
		{
			if (!(m_path == value))
			{
				m_path = value;
			}
		}
	}

	[Obsolete("use Load(path)")]
	public void Parse()
	{
		Parse(Path);
	}

	public void Parse(string path)
	{
		Parse(path, File.ReadAllText(path, Encoding.UTF8));
	}

	public void Parse(string path, string source)
	{
		Path = path;
		Source = source;
		Bvh = Bvh.Parse(Source);
	}

	public void Load()
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Expected O, but got Unknown
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		Root = new GameObject(System.IO.Path.GetFileNameWithoutExtension(Path));
		Transform val = BuildHierarchy(Root.transform, Bvh.Root, 1f);
		Skeleton skeleton = Skeleton.Estimate(val);
		AvatarDescription avatarDescription = AvatarDescription.Create(val.Traverse().ToArray(), skeleton);
		int channelIndex = Bvh.Root.GetChannelIndex(BvhChannel.Yposition);
		float num = Bvh.Channels[channelIndex].Keys[0];
		float num2 = 1f;
		num2 = 1f / num;
		foreach (Transform item in Root.transform.Traverse())
		{
			item.localPosition *= num2;
		}
		float num3 = num * num2;
		val.position = new Vector3(0f, num3, 0f);
		Animation = BvhAnimation.CreateAnimationClip(Bvh, num2);
		((Object)Animation).name = ((Object)Root).name;
		Animation.legacy = true;
		Animation.wrapMode = (WrapMode)2;
		Animation obj = Root.AddComponent<Animation>();
		obj.AddClip(Animation, ((Object)Animation).name);
		obj.clip = Animation;
		obj.Play();
		Avatar = avatarDescription.CreateAvatar(Root.transform);
		((Object)Avatar).name = "Avatar";
		AvatarDescription = avatarDescription;
		Root.AddComponent<Animator>().avatar = Avatar;
		Root.AddComponent<HumanPoseTransfer>();
	}

	private static Transform BuildHierarchy(Transform parent, BvhNode node, float toMeter)
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = new GameObject(node.Name);
		val.transform.localPosition = node.Offset.ToXReversedVector3() * toMeter;
		val.transform.SetParent(parent, false);
		foreach (BvhNode child in node.Children)
		{
			BuildHierarchy(val.transform, child, toMeter);
		}
		return val.transform;
	}

	public void Destroy(bool destroySubAssets)
	{
		if ((Object)(object)Root != (Object)null)
		{
			Object.DestroyImmediate((Object)(object)Root);
		}
	}
}
public static class BvhExtensions
{
	public static Func<float, float, float, Quaternion> GetEulerToRotation(this BvhNode bvh)
	{
		BvhChannel[] order = bvh.Channels.Where((BvhChannel x) => x == BvhChannel.Xrotation || x == BvhChannel.Yrotation || x == BvhChannel.Zrotation).ToArray();
		return delegate(float x, float y, float z)
		{
			//IL_000b: 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_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: 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_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: 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_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: 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)
			Quaternion val = Quaternion.Euler(x, 0f, 0f);
			Quaternion val2 = Quaternion.Euler(0f, y, 0f);
			Quaternion val3 = Quaternion.Euler(0f, 0f, z);
			Quaternion val4 = Quaternion.identity;
			BvhChannel[] array = order;
			for (int i = 0; i < array.Length; i++)
			{
				val4 = (Quaternion)(array[i] switch
				{
					BvhChannel.Xrotation => val4 * val, 
					BvhChannel.Yrotation => val4 * val2, 
					BvhChannel.Zrotation => val4 * val3, 
					_ => throw new BvhException("no rotation"), 
				});
			}
			return val4;
		};
	}

	public static Vector3 ToVector3(this Vector3 s3)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		return new Vector3(s3.x, s3.y, s3.z);
	}

	public static Vector3 ToXReversedVector3(this Vector3 s3)
	{
		//IL_0000: Unknown result type (might be due

valheim_Data/Managed/Unity.Burst.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Text;
using AOT;
using Microsoft.CodeAnalysis;
using Unity.Burst.LowLevel;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs.LowLevel.Unsafe;
using UnityEngine;
using UnityEngine.Scripting;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.Burst.CodeGen")]
[assembly: InternalsVisibleTo("Unity.Burst.Editor")]
[assembly: InternalsVisibleTo("Unity.Burst.Tests.UnitTests")]
[assembly: InternalsVisibleTo("Unity.Burst.Editor.Tests")]
[assembly: InternalsVisibleTo("Unity.Burst.Benchmarks")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class IsUnmanagedAttribute : Attribute
	{
	}
}
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[3580]
		{
			0, 0, 0, 1, 0, 0, 0, 77, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			98, 117, 114, 115, 116, 64, 49, 46, 56, 46,
			49, 49, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 66, 117, 114, 115, 116, 67, 111, 109, 112,
			105, 108, 101, 65, 116, 116, 114, 105, 98, 117,
			116, 101, 46, 99, 115, 0, 0, 0, 5, 0,
			0, 0, 69, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 98, 117, 114, 115, 116,
			64, 49, 46, 56, 46, 49, 49, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 66, 117, 114, 115,
			116, 67, 111, 109, 112, 105, 108, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 76,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 66, 117, 114, 115, 116, 67, 111,
			109, 112, 105, 108, 101, 114, 79, 112, 116, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 4,
			0, 0, 0, 68, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 98, 117, 114, 115,
			116, 64, 49, 46, 56, 46, 49, 49, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 66, 117, 114,
			115, 116, 82, 117, 110, 116, 105, 109, 101, 46,
			99, 115, 0, 0, 0, 4, 0, 0, 0, 67,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 66, 117, 114, 115, 116, 83, 116,
			114, 105, 110, 103, 46, 99, 115, 0, 0, 0,
			4, 0, 0, 0, 73, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 98, 117, 114,
			115, 116, 64, 49, 46, 56, 46, 49, 49, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 66, 117,
			114, 115, 116, 83, 116, 114, 105, 110, 103, 46,
			70, 108, 111, 97, 116, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 81, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 98, 117,
			114, 115, 116, 64, 49, 46, 56, 46, 49, 49,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 105, 108, 101, 114, 83, 101, 114,
			118, 105, 99, 101, 115, 92, 65, 108, 105, 97,
			115, 105, 110, 103, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 93, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 98, 117, 114,
			115, 116, 64, 49, 46, 56, 46, 49, 49, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 105, 108, 101, 114, 83, 101, 114, 118,
			105, 99, 101, 115, 92, 65, 115, 115, 117, 109,
			101, 82, 97, 110, 103, 101, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 81, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 98, 117,
			114, 115, 116, 64, 49, 46, 56, 46, 49, 49,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 105, 108, 101, 114, 83, 101, 114,
			118, 105, 99, 101, 115, 92, 67, 111, 110, 115,
			116, 97, 110, 116, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 77, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 98, 117, 114,
			115, 116, 64, 49, 46, 56, 46, 49, 49, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 105, 108, 101, 114, 83, 101, 114, 118,
			105, 99, 101, 115, 92, 72, 105, 110, 116, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 95,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 105, 108, 101,
			114, 83, 101, 114, 118, 105, 99, 101, 115, 92,
			73, 103, 110, 111, 114, 101, 87, 97, 114, 110,
			105, 110, 103, 65, 116, 116, 114, 105, 98, 117,
			116, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 96, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 98, 117, 114, 115, 116,
			64, 49, 46, 56, 46, 49, 49, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 109, 112,
			105, 108, 101, 114, 83, 101, 114, 118, 105, 99,
			101, 115, 92, 83, 107, 105, 112, 76, 111, 99,
			97, 108, 115, 73, 110, 105, 116, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 71, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 98,
			117, 114, 115, 116, 64, 49, 46, 56, 46, 49,
			49, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			70, 117, 110, 99, 116, 105, 111, 110, 80, 111,
			105, 110, 116, 101, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 75, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 98, 117,
			114, 115, 116, 64, 49, 46, 56, 46, 49, 49,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 92,
			65, 114, 109, 92, 78, 69, 79, 78, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 83, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 98, 117, 114, 115, 116, 64, 49, 46, 56,
			46, 49, 49, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 92, 65, 114, 109, 92, 78, 69, 79,
			78, 95, 65, 65, 114, 99, 104, 54, 52, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 90,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 92, 65, 114, 109, 92, 78, 69,
			79, 78, 95, 65, 65, 114, 99, 104, 54, 52,
			95, 99, 114, 121, 112, 116, 111, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 91, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			98, 117, 114, 115, 116, 64, 49, 46, 56, 46,
			49, 49, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 92, 65, 114, 109, 92, 78, 69, 79, 78,
			95, 65, 65, 114, 99, 104, 54, 52, 95, 100,
			111, 116, 112, 114, 111, 100, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 88, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 98,
			117, 114, 115, 116, 64, 49, 46, 56, 46, 49,
			49, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			92, 65, 114, 109, 92, 78, 69, 79, 78, 95,
			65, 65, 114, 99, 104, 54, 52, 95, 114, 100,
			109, 97, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 80, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 98, 117, 114, 115, 116,
			64, 49, 46, 56, 46, 49, 49, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 92, 65, 114, 109,
			92, 78, 69, 79, 78, 95, 99, 116, 111, 114,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			73, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 98, 117, 114, 115, 116, 64, 49,
			46, 56, 46, 49, 49, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 114, 105, 110,
			115, 105, 99, 115, 92, 67, 111, 109, 109, 111,
			110, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 81, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 98, 117, 114, 115, 116, 64,
			49, 46, 56, 46, 49, 49, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 114, 105,
			110, 115, 105, 99, 115, 92, 83, 105, 109, 100,
			68, 101, 98, 117, 103, 86, 105, 101, 119, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			71, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 98, 117, 114, 115, 116, 64, 49,
			46, 56, 46, 49, 49, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 114, 105, 110,
			115, 105, 99, 115, 92, 118, 49, 50, 56, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 71,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 92, 118, 50, 53, 54, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 70, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 98, 117, 114, 115, 116, 64, 49, 46, 56,
			46, 49, 49, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 92, 118, 54, 52, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 74, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 98,
			117, 114, 115, 116, 64, 49, 46, 56, 46, 49,
			49, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			92, 120, 56, 54, 92, 65, 118, 120, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 75, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 98, 117, 114, 115, 116, 64, 49, 46, 56,
			46, 49, 49, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 92, 120, 56, 54, 92, 65, 118, 120,
			50, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 75, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 98, 117, 114, 115, 116, 64,
			49, 46, 56, 46, 49, 49, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 114, 105,
			110, 115, 105, 99, 115, 92, 120, 56, 54, 92,
			66, 109, 105, 49, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 75, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 98, 117, 114,
			115, 116, 64, 49, 46, 56, 46, 49, 49, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 92, 120,
			56, 54, 92, 66, 109, 105, 50, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 77, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			98, 117, 114, 115, 116, 64, 49, 46, 56, 46,
			49, 49, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 92, 120, 56, 54, 92, 67, 111, 109, 109,
			111, 110, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 74, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 98, 117, 114, 115, 116,
			64, 49, 46, 56, 46, 49, 49, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 92, 120, 56, 54,
			92, 67, 115, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 75, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 98, 117, 114,
			115, 116, 64, 49, 46, 56, 46, 49, 49, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 92, 120,
			56, 54, 92, 70, 49, 54, 67, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 74, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			98, 117, 114, 115, 116, 64, 49, 46, 56, 46,
			49, 49, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 92, 120, 56, 54, 92, 70, 109, 97, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 77,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 92, 120, 56, 54, 92, 80, 111,
			112, 99, 110, 116, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 74, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 98, 117, 114,
			115, 116, 64, 49, 46, 56, 46, 49, 49, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 92, 120,
			56, 54, 92, 83, 115, 101, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 75, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 98,
			117, 114, 115, 116, 64, 49, 46, 56, 46, 49,
			49, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			92, 120, 56, 54, 92, 83, 115, 101, 50, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 75,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 98, 117, 114, 115, 116, 64, 49, 46,
			56, 46, 49, 49, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 92, 120, 56, 54, 92, 83, 115,
			101, 51, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 77, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 98, 117, 114, 115, 116,
			64, 49, 46, 56, 46, 49, 49, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 92, 120, 56, 54,
			92, 83, 115, 101, 52, 95, 49, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 77, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			98, 117, 114, 115, 116, 64, 49, 46, 56, 46,
			49, 49, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 92, 120, 56, 54, 92, 83, 115, 101, 52,
			95, 50, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 76, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 98, 117, 114, 115, 116,
			64, 49, 46, 56, 46, 49, 49, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 92, 120, 56, 54,
			92, 83, 115, 115, 101, 51, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 72, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 98,
			117, 114, 115, 116, 64, 49, 46, 56, 46, 49,
			49, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			78, 111, 65, 108, 105, 97, 115, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 77, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 98,
			117, 114, 115, 116, 64, 49, 46, 56, 46, 49,
			49, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			83, 97, 102, 101, 83, 116, 114, 105, 110, 103,
			65, 114, 114, 97, 121, 72, 101, 108, 112, 101,
			114, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 68, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 98, 117, 114, 115, 116, 64,
			49, 46, 56, 46, 49, 49, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 83, 104, 97, 114, 101,
			100, 83, 116, 97, 116, 105, 99, 46, 99, 115
		};
		result.TypesData = new byte[3068]
		{
			0, 0, 0, 0, 33, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 124, 66, 117, 114,
			115, 116, 67, 111, 109, 112, 105, 108, 101, 65,
			116, 116, 114, 105, 98, 117, 116, 101, 0, 0,
			0, 0, 25, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 124, 66, 117, 114, 115, 116,
			67, 111, 109, 112, 105, 108, 101, 114, 0, 0,
			0, 0, 40, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 66, 117, 114, 115, 116,
			67, 111, 109, 112, 105, 108, 101, 114, 124, 67,
			111, 109, 109, 97, 110, 100, 66, 117, 105, 108,
			100, 101, 114, 0, 0, 0, 0, 51, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 46,
			66, 117, 114, 115, 116, 67, 111, 109, 112, 105,
			108, 101, 114, 124, 83, 116, 97, 116, 105, 99,
			84, 121, 112, 101, 82, 101, 105, 110, 105, 116,
			65, 116, 116, 114, 105, 98, 117, 116, 101, 0,
			0, 0, 0, 45, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 66, 117, 114, 115,
			116, 67, 111, 109, 112, 105, 108, 101, 114, 124,
			66, 117, 114, 115, 116, 67, 111, 109, 112, 105,
			108, 101, 114, 72, 101, 108, 112, 101, 114, 0,
			0, 0, 0, 38, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 66, 117, 114, 115,
			116, 67, 111, 109, 112, 105, 108, 101, 114, 124,
			70, 97, 107, 101, 68, 101, 108, 101, 103, 97,
			116, 101, 0, 0, 0, 0, 32, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 124, 66,
			117, 114, 115, 116, 67, 111, 109, 112, 105, 108,
			101, 114, 79, 112, 116, 105, 111, 110, 115, 0,
			0, 0, 0, 24, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 124, 66, 117, 114, 115,
			116, 82, 117, 110, 116, 105, 109, 101, 0, 0,
			0, 0, 35, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 66, 117, 114, 115, 116,
			82, 117, 110, 116, 105, 109, 101, 124, 72, 97,
			115, 104, 67, 111, 100, 101, 51, 50, 0, 0,
			0, 0, 35, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 66, 117, 114, 115, 116,
			82, 117, 110, 116, 105, 109, 101, 124, 72, 97,
			115, 104, 67, 111, 100, 101, 54, 52, 0, 0,
			0, 0, 42, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 66, 117, 114, 115, 116,
			82, 117, 110, 116, 105, 109, 101, 124, 80, 114,
			101, 115, 101, 114, 118, 101, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 1, 0, 0, 0, 23,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 124, 66, 117, 114, 115, 116, 83, 116, 114,
			105, 110, 103, 0, 0, 0, 0, 41, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 46,
			66, 117, 114, 115, 116, 83, 116, 114, 105, 110,
			103, 124, 80, 114, 101, 115, 101, 114, 118, 101,
			65, 116, 116, 114, 105, 98, 117, 116, 101, 0,
			0, 0, 0, 36, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 66, 117, 114, 115,
			116, 83, 116, 114, 105, 110, 103, 124, 78, 117,
			109, 98, 101, 114, 66, 117, 102, 102, 101, 114,
			0, 0, 0, 0, 37, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 46, 66, 117, 114,
			115, 116, 83, 116, 114, 105, 110, 103, 124, 70,
			111, 114, 109, 97, 116, 79, 112, 116, 105, 111,
			110, 115, 1, 0, 0, 0, 23, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 124, 66,
			117, 114, 115, 116, 83, 116, 114, 105, 110, 103,
			0, 0, 0, 0, 31, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 46, 66, 117, 114,
			115, 116, 83, 116, 114, 105, 110, 103, 124, 116,
			66, 105, 103, 73, 110, 116, 0, 0, 0, 0,
			37, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 66, 117, 114, 115, 116, 83, 116,
			114, 105, 110, 103, 124, 116, 70, 108, 111, 97,
			116, 85, 110, 105, 111, 110, 51, 50, 0, 0,
			0, 0, 37, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 66, 117, 114, 115, 116,
			83, 116, 114, 105, 110, 103, 124, 116, 70, 108,
			111, 97, 116, 85, 110, 105, 111, 110, 54, 52,
			0, 0, 0, 0, 37, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 46, 67, 111, 109,
			112, 105, 108, 101, 114, 83, 101, 114, 118, 105,
			99, 101, 115, 124, 65, 108, 105, 97, 115, 105,
			110, 103, 0, 0, 0, 0, 49, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 67,
			111, 109, 112, 105, 108, 101, 114, 83, 101, 114,
			118, 105, 99, 101, 115, 124, 65, 115, 115, 117,
			109, 101, 82, 97, 110, 103, 101, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 0, 0, 0, 0,
			37, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 67, 111, 109, 112, 105, 108, 101,
			114, 83, 101, 114, 118, 105, 99, 101, 115, 124,
			67, 111, 110, 115, 116, 97, 110, 116, 0, 0,
			0, 0, 33, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 67, 111, 109, 112, 105,
			108, 101, 114, 83, 101, 114, 118, 105, 99, 101,
			115, 124, 72, 105, 110, 116, 0, 0, 0, 0,
			51, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 67, 111, 109, 112, 105, 108, 101,
			114, 83, 101, 114, 118, 105, 99, 101, 115, 124,
			73, 103, 110, 111, 114, 101, 87, 97, 114, 110,
			105, 110, 103, 65, 116, 116, 114, 105, 98, 117,
			116, 101, 0, 0, 0, 0, 52, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 67,
			111, 109, 112, 105, 108, 101, 114, 83, 101, 114,
			118, 105, 99, 101, 115, 124, 83, 107, 105, 112,
			76, 111, 99, 97, 108, 115, 73, 110, 105, 116,
			65, 116, 116, 114, 105, 98, 117, 116, 101, 0,
			0, 0, 0, 28, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 124, 73, 70, 117, 110,
			99, 116, 105, 111, 110, 80, 111, 105, 110, 116,
			101, 114, 0, 0, 0, 0, 27, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 124, 70,
			117, 110, 99, 116, 105, 111, 110, 80, 111, 105,
			110, 116, 101, 114, 1, 0, 0, 0, 26, 85,
			110, 105, 116, 121, 46, 66, 117, 114, 115, 116,
			46, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 124, 65, 114, 109, 1, 0, 0, 0, 31,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 46, 65, 114, 109, 124, 78, 101, 111,
			110, 1, 0, 0, 0, 26, 85, 110, 105, 116,
			121, 46, 66, 117, 114, 115, 116, 46, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 124, 65,
			114, 109, 1, 0, 0, 0, 31, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 46,
			65, 114, 109, 124, 78, 101, 111, 110, 1, 0,
			0, 0, 26, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 73, 110, 116, 114, 105,
			110, 115, 105, 99, 115, 124, 65, 114, 109, 1,
			0, 0, 0, 31, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 46, 65, 114, 109,
			124, 78, 101, 111, 110, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 124, 65, 114, 109, 1, 0, 0, 0,
			31, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 46, 65, 114, 109, 124, 78, 101,
			111, 110, 1, 0, 0, 0, 26, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 124,
			65, 114, 109, 1, 0, 0, 0, 31, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 46,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			46, 65, 114, 109, 124, 78, 101, 111, 110, 1,
			0, 0, 0, 26, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 124, 65, 114, 109,
			1, 0, 0, 0, 31, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 46, 73, 110, 116,
			114, 105, 110, 115, 105, 99, 115, 46, 65, 114,
			109, 124, 78, 101, 111, 110, 0, 0, 0, 0,
			29, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 124, 67, 111, 109, 109, 111, 110,
			0, 0, 0, 0, 46, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 46, 73, 110, 116,
			114, 105, 110, 115, 105, 99, 115, 124, 66, 117,
			114, 115, 116, 84, 97, 114, 103, 101, 116, 67,
			112, 117, 65, 116, 116, 114, 105, 98, 117, 116,
			101, 0, 0, 0, 0, 35, 85, 110, 105, 116,
			121, 46, 66, 117, 114, 115, 116, 46, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 124, 86,
			54, 52, 68, 101, 98, 117, 103, 86, 105, 101,
			119, 0, 0, 0, 0, 36, 85, 110, 105, 116,
			121, 46, 66, 117, 114, 115, 116, 46, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 124, 86,
			49, 50, 56, 68, 101, 98, 117, 103, 86, 105,
			101, 119, 0, 0, 0, 0, 36, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 124,
			86, 50, 53, 54, 68, 101, 98, 117, 103, 86,
			105, 101, 119, 0, 0, 0, 0, 27, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 46,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			124, 118, 49, 50, 56, 0, 0, 0, 0, 27,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 124, 118, 50, 53, 54, 0, 0, 0,
			0, 26, 85, 110, 105, 116, 121, 46, 66, 117,
			114, 115, 116, 46, 73, 110, 116, 114, 105, 110,
			115, 105, 99, 115, 124, 118, 54, 52, 1, 0,
			0, 0, 26, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 73, 110, 116, 114, 105,
			110, 115, 105, 99, 115, 124, 88, 56, 54, 0,
			0, 0, 0, 30, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 46, 88, 56, 54,
			124, 65, 118, 120, 1, 0, 0, 0, 26, 85,
			110, 105, 116, 121, 46, 66, 117, 114, 115, 116,
			46, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 124, 88, 56, 54, 0, 0, 0, 0, 31,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 46, 88, 56, 54, 124, 65, 118, 120,
			50, 1, 0, 0, 0, 26, 85, 110, 105, 116,
			121, 46, 66, 117, 114, 115, 116, 46, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 124, 88,
			56, 54, 0, 0, 0, 0, 31, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 46,
			88, 56, 54, 124, 66, 109, 105, 49, 1, 0,
			0, 0, 26, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 73, 110, 116, 114, 105,
			110, 115, 105, 99, 115, 124, 88, 56, 54, 0,
			0, 0, 0, 31, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 46, 88, 56, 54,
			124, 66, 109, 105, 50, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 124, 88, 56, 54, 1, 0, 0, 0,
			26, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 124, 88, 56, 54, 0, 0, 0,
			0, 40, 85, 110, 105, 116, 121, 46, 66, 117,
			114, 115, 116, 46, 73, 110, 116, 114, 105, 110,
			115, 105, 99, 115, 46, 88, 56, 54, 124, 82,
			111, 117, 110, 100, 105, 110, 103, 83, 99, 111,
			112, 101, 1, 0, 0, 0, 26, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 124,
			88, 56, 54, 0, 0, 0, 0, 31, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 46,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			46, 88, 56, 54, 124, 70, 49, 54, 67, 1,
			0, 0, 0, 26, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 124, 88, 56, 54,
			0, 0, 0, 0, 30, 85, 110, 105, 116, 121,
			46, 66, 117, 114, 115, 116, 46, 73, 110, 116,
			114, 105, 110, 115, 105, 99, 115, 46, 88, 56,
			54, 124, 70, 109, 97, 0, 0, 0, 0, 36,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 46, 88, 56, 54, 43, 70, 109, 97,
			124, 85, 110, 105, 111, 110, 1, 0, 0, 0,
			26, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 124, 88, 56, 54, 0, 0, 0,
			0, 33, 85, 110, 105, 116, 121, 46, 66, 117,
			114, 115, 116, 46, 73, 110, 116, 114, 105, 110,
			115, 105, 99, 115, 46, 88, 56, 54, 124, 80,
			111, 112, 99, 110, 116, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 124, 88, 56, 54, 0, 0, 0, 0,
			30, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 46, 88, 56, 54, 124, 83, 115,
			101, 1, 0, 0, 0, 26, 85, 110, 105, 116,
			121, 46, 66, 117, 114, 115, 116, 46, 73, 110,
			116, 114, 105, 110, 115, 105, 99, 115, 124, 88,
			56, 54, 0, 0, 0, 0, 31, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 46, 73,
			110, 116, 114, 105, 110, 115, 105, 99, 115, 46,
			88, 56, 54, 124, 83, 115, 101, 50, 1, 0,
			0, 0, 26, 85, 110, 105, 116, 121, 46, 66,
			117, 114, 115, 116, 46, 73, 110, 116, 114, 105,
			110, 115, 105, 99, 115, 124, 88, 56, 54, 0,
			0, 0, 0, 31, 85, 110, 105, 116, 121, 46,
			66, 117, 114, 115, 116, 46, 73, 110, 116, 114,
			105, 110, 115, 105, 99, 115, 46, 88, 56, 54,
			124, 83, 115, 101, 51, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 124, 88, 56, 54, 0, 0, 0, 0,
			33, 85, 110, 105, 116, 121, 46, 66, 117, 114,
			115, 116, 46, 73, 110, 116, 114, 105, 110, 115,
			105, 99, 115, 46, 88, 56, 54, 124, 83, 115,
			101, 52, 95, 49, 1, 0, 0, 0, 26, 85,
			110, 105, 116, 121, 46, 66, 117, 114, 115, 116,
			46, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 124, 88, 56, 54, 0, 0, 0, 0, 33,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 46, 88, 56, 54, 124, 83, 115, 101,
			52, 95, 50, 0, 0, 0, 0, 46, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 46,
			73, 110, 116, 114, 105, 110, 115, 105, 99, 115,
			46, 88, 56, 54, 43, 83, 115, 101, 52, 95,
			50, 124, 83, 116, 114, 66, 111, 111, 108, 65,
			114, 114, 97, 121, 1, 0, 0, 0, 26, 85,
			110, 105, 116, 121, 46, 66, 117, 114, 115, 116,
			46, 73, 110, 116, 114, 105, 110, 115, 105, 99,
			115, 124, 88, 56, 54, 0, 0, 0, 0, 32,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 46, 73, 110, 116, 114, 105, 110, 115, 105,
			99, 115, 46, 88, 56, 54, 124, 83, 115, 115,
			101, 51, 0, 0, 0, 0, 28, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 124, 78,
			111, 65, 108, 105, 97, 115, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 0, 0, 0, 0, 33,
			85, 110, 105, 116, 121, 46, 66, 117, 114, 115,
			116, 124, 83, 97, 102, 101, 83, 116, 114, 105,
			110, 103, 65, 114, 114, 97, 121, 72, 101, 108,
			112, 101, 114, 1, 0, 0, 0, 24, 85, 110,
			105, 116, 121, 46, 66, 117, 114, 115, 116, 124,
			83, 104, 97, 114, 101, 100, 83, 116, 97, 116,
			105, 99, 1, 0, 0, 0, 24, 85, 110, 105,
			116, 121, 46, 66, 117, 114, 115, 116, 124, 83,
			104, 97, 114, 101, 100, 83, 116, 97, 116, 105,
			99, 0, 0, 0, 0, 42, 85, 110, 105, 116,
			121, 46, 66, 117, 114, 115, 116, 46, 83, 104,
			97, 114, 101, 100, 83, 116, 97, 116, 105, 99,
			124, 80, 114, 101, 115, 101, 114, 118, 101, 65,
			116, 116, 114, 105, 98, 117, 116, 101
		};
		result.TotalFiles = 42;
		result.TotalTypes = 83;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace Unity.Burst
{
	public enum OptimizeFor
	{
		Default,
		Performance,
		Size,
		FastCompilation,
		Balanced
	}
	public enum FloatMode
	{
		Default,
		Strict,
		Deterministic,
		Fast
	}
	public enum FloatPrecision
	{
		Standard,
		High,
		Medium,
		Low
	}
	[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method)]
	public class BurstCompileAttribute : Attribute
	{
		internal bool? _compileSynchronously;

		internal bool? _debug;

		internal bool? _disableSafetyChecks;

		internal bool? _disableDirectCall;

		public FloatMode FloatMode { get; set; }

		public FloatPrecision FloatPrecision { get; set; }

		public bool CompileSynchronously
		{
			get
			{
				if (!_compileSynchronously.HasValue)
				{
					return false;
				}
				return _compileSynchronously.Value;
			}
			set
			{
				_compileSynchronously = value;
			}
		}

		public bool Debug
		{
			get
			{
				if (!_debug.HasValue)
				{
					return false;
				}
				return _debug.Value;
			}
			set
			{
				_debug = value;
			}
		}

		public bool DisableSafetyChecks
		{
			get
			{
				if (!_disableSafetyChecks.HasValue)
				{
					return false;
				}
				return _disableSafetyChecks.Value;
			}
			set
			{
				_disableSafetyChecks = value;
			}
		}

		public bool DisableDirectCall
		{
			get
			{
				if (!_disableDirectCall.HasValue)
				{
					return false;
				}
				return _disableDirectCall.Value;
			}
			set
			{
				_disableDirectCall = value;
			}
		}

		public OptimizeFor OptimizeFor { get; set; }

		internal string[] Options { get; set; }

		public BurstCompileAttribute()
		{
		}

		public BurstCompileAttribute(FloatPrecision floatPrecision, FloatMode floatMode)
		{
			FloatMode = floatMode;
			FloatPrecision = floatPrecision;
		}

		internal BurstCompileAttribute(string[] options)
		{
			Options = options;
		}
	}
	public static class BurstCompiler
	{
		private class CommandBuilder
		{
			private StringBuilder _builder;

			private bool _hasArgs;

			public CommandBuilder()
			{
				_builder = new StringBuilder();
				_hasArgs = false;
			}

			public CommandBuilder Begin(string cmd)
			{
				_builder.Clear();
				_hasArgs = false;
				_builder.Append(cmd);
				return this;
			}

			public CommandBuilder With(string arg)
			{
				if (!_hasArgs)
				{
					_builder.Append(' ');
				}
				_hasArgs = true;
				_builder.Append(arg);
				return this;
			}

			public CommandBuilder With(IntPtr arg)
			{
				if (!_hasArgs)
				{
					_builder.Append(' ');
				}
				_hasArgs = true;
				_builder.AppendFormat("0x{0:X16}", arg.ToInt64());
				return this;
			}

			public CommandBuilder And(char sep = '|')
			{
				_builder.Append(sep);
				return this;
			}

			public string SendToCompiler()
			{
				return SendRawCommandToCompiler(_builder.ToString());
			}
		}

		[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
		internal class StaticTypeReinitAttribute : Attribute
		{
			public readonly Type reinitType;

			public StaticTypeReinitAttribute(Type toReinit)
			{
				reinitType = toReinit;
			}
		}

		[BurstCompile]
		internal static class BurstCompilerHelper
		{
			[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
			private delegate bool IsBurstEnabledDelegate();

			private static readonly IsBurstEnabledDelegate IsBurstEnabledImpl = IsBurstEnabled;

			public static readonly bool IsBurstGenerated = IsCompiledByBurst(IsBurstEnabledImpl);

			[BurstCompile]
			[MonoPInvokeCallback(typeof(IsBurstEnabledDelegate))]
			private static bool IsBurstEnabled()
			{
				bool value = true;
				DiscardedMethod(ref value);
				return value;
			}

			[BurstDiscard]
			private static void DiscardedMethod(ref bool value)
			{
				value = false;
			}

			private unsafe static bool IsCompiledByBurst(Delegate del)
			{
				return BurstCompilerService.GetAsyncCompiledAsyncDelegateMethod(BurstCompilerService.CompileAsyncDelegateMethod((object)del, string.Empty)) != null;
			}
		}

		private class FakeDelegate
		{
			[Preserve]
			public MethodInfo Method { get; }

			public FakeDelegate(MethodInfo method)
			{
				Method = method;
			}
		}

		[ThreadStatic]
		private static CommandBuilder _cmdBuilder;

		internal static bool _IsEnabled;

		public static readonly BurstCompilerOptions Options = new BurstCompilerOptions(isGlobal: true);

		internal static Action OnCompileILPPMethod2;

		private static readonly MethodInfo DummyMethodInfo = typeof(BurstCompiler).GetMethod("DummyMethod", BindingFlags.Static | BindingFlags.NonPublic);

		public static bool IsEnabled
		{
			get
			{
				if (_IsEnabled)
				{
					return BurstCompilerHelper.IsBurstGenerated;
				}
				return false;
			}
		}

		public static bool IsLoadAdditionalLibrarySupported()
		{
			return IsApiAvailable("LoadBurstLibrary");
		}

		private static CommandBuilder BeginCompilerCommand(string cmd)
		{
			if (_cmdBuilder == null)
			{
				_cmdBuilder = new CommandBuilder();
			}
			return _cmdBuilder.Begin(cmd);
		}

		public static void SetExecutionMode(BurstExecutionEnvironment mode)
		{
			BurstCompilerService.SetCurrentExecutionMode((uint)mode);
		}

		public static BurstExecutionEnvironment GetExecutionMode()
		{
			return (BurstExecutionEnvironment)BurstCompilerService.GetCurrentExecutionMode();
		}

		internal unsafe static T CompileDelegate<T>(T delegateMethod) where T : class
		{
			return (T)(object)Marshal.GetDelegateForFunctionPointer((IntPtr)Compile(delegateMethod, isFunctionPointer: false), delegateMethod.GetType());
		}

		[Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")]
		private static void VerifyDelegateIsNotMulticast<T>(T delegateMethod) where T : class
		{
			if ((delegateMethod as Delegate).GetInvocationList().Length > 1)
			{
				throw new InvalidOperationException($"Burst does not support multicast delegates, please use a regular delegate for `{delegateMethod}'");
			}
		}

		[Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")]
		private static void VerifyDelegateHasCorrectUnmanagedFunctionPointerAttribute<T>(T delegateMethod) where T : class
		{
			UnmanagedFunctionPointerAttribute customAttribute = delegateMethod.GetType().GetCustomAttribute<UnmanagedFunctionPointerAttribute>();
			if (customAttribute == null || customAttribute.CallingConvention != CallingConvention.Cdecl)
			{
				Debug.LogWarning((object)("The delegate type " + delegateMethod.GetType().FullName + " should be decorated with [UnmanagedFunctionPointer(CallingConvention.Cdecl)] to ensure runtime interoperabilty between managed code and Burst-compiled code."));
			}
		}

		[Obsolete("This method will be removed in a future version of Burst")]
		public static IntPtr CompileILPPMethod(RuntimeMethodHandle burstMethodHandle, RuntimeMethodHandle managedMethodHandle, RuntimeTypeHandle delegateTypeHandle)
		{
			throw new NotImplementedException();
		}

		public unsafe static IntPtr CompileILPPMethod2(RuntimeMethodHandle burstMethodHandle)
		{
			if (burstMethodHandle.Value == IntPtr.Zero)
			{
				throw new ArgumentNullException("burstMethodHandle");
			}
			OnCompileILPPMethod2?.Invoke();
			MethodInfo methodInfo = (MethodInfo)MethodBase.GetMethodFromHandle(burstMethodHandle);
			return (IntPtr)Compile(new FakeDelegate(methodInfo), methodInfo, isFunctionPointer: true, isILPostProcessing: true);
		}

		[Obsolete("This method will be removed in a future version of Burst")]
		public unsafe static void* GetILPPMethodFunctionPointer(IntPtr ilppMethod)
		{
			throw new NotImplementedException();
		}

		public unsafe static void* GetILPPMethodFunctionPointer2(IntPtr ilppMethod, RuntimeMethodHandle managedMethodHandle, RuntimeTypeHandle delegateTypeHandle)
		{
			if (ilppMethod == IntPtr.Zero)
			{
				throw new ArgumentNullException("ilppMethod");
			}
			if (managedMethodHandle.Value == IntPtr.Zero)
			{
				throw new ArgumentNullException("managedMethodHandle");
			}
			if (delegateTypeHandle.Value == IntPtr.Zero)
			{
				throw new ArgumentNullException("delegateTypeHandle");
			}
			return ilppMethod.ToPointer();
		}

		[Obsolete("This method will be removed in a future version of Burst")]
		public unsafe static void* CompileUnsafeStaticMethod(RuntimeMethodHandle handle)
		{
			throw new NotImplementedException();
		}

		public unsafe static FunctionPointer<T> CompileFunctionPointer<T>(T delegateMethod) where T : class
		{
			return new FunctionPointer<T>(new IntPtr(Compile(delegateMethod, isFunctionPointer: true)));
		}

		private unsafe static void* Compile(object delegateObj, bool isFunctionPointer)
		{
			if (!(delegateObj is Delegate))
			{
				throw new ArgumentException("object instance must be a System.Delegate", "delegateObj");
			}
			Delegate @delegate = (Delegate)delegateObj;
			return Compile(@delegate, @delegate.Method, isFunctionPointer, isILPostProcessing: false);
		}

		private unsafe static void* Compile(object delegateObj, MethodInfo methodInfo, bool isFunctionPointer, bool isILPostProcessing)
		{
			if (delegateObj == null)
			{
				throw new ArgumentNullException("delegateObj");
			}
			if (delegateObj.GetType().IsGenericType)
			{
				throw new InvalidOperationException($"The delegate type `{delegateObj.GetType()}` must be a non-generic type");
			}
			if (!methodInfo.IsStatic)
			{
				throw new InvalidOperationException($"The method `{methodInfo}` must be static. Instance methods are not supported");
			}
			if (methodInfo.IsGenericMethod)
			{
				throw new InvalidOperationException($"The method `{methodInfo}` must be a non-generic method");
			}
			Delegate @delegate = null;
			if (!isILPostProcessing)
			{
				@delegate = delegateObj as Delegate;
			}
			if (BurstCompilerOptions.HasBurstCompileAttribute(methodInfo))
			{
				void* ptr;
				if (Options.EnableBurstCompilation && BurstCompilerHelper.IsBurstGenerated)
				{
					ptr = BurstCompilerService.GetAsyncCompiledAsyncDelegateMethod(BurstCompilerService.CompileAsyncDelegateMethod(delegateObj, string.Empty));
				}
				else
				{
					if (isILPostProcessing)
					{
						return null;
					}
					GCHandle.Alloc(@delegate);
					ptr = (void*)Marshal.GetFunctionPointerForDelegate(@delegate);
				}
				if (ptr == null)
				{
					throw new InvalidOperationException($"Burst failed to compile the function pointer `{methodInfo}`");
				}
				return ptr;
			}
			throw new InvalidOperationException($"Burst cannot compile the function pointer `{methodInfo}` because the `[BurstCompile]` attribute is missing");
		}

		internal static void Shutdown()
		{
		}

		internal static void Cancel()
		{
		}

		internal static bool IsCurrentCompilationDone()
		{
			return true;
		}

		internal static void Enable()
		{
		}

		internal static void Disable()
		{
		}

		internal static bool IsHostEditorArm()
		{
			return false;
		}

		internal static void TriggerUnsafeStaticMethodRecompilation()
		{
			Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
			for (int i = 0; i < assemblies.Length; i++)
			{
				foreach (Attribute item in from x in assemblies[i].GetCustomAttributes()
					where x.GetType().FullName == "Unity.Burst.BurstCompiler+StaticTypeReinitAttribute"
					select x)
				{
					(item as StaticTypeReinitAttribute).reinitType.GetMethod("Constructor", BindingFlags.Static | BindingFlags.Public).Invoke(null, new object[0]);
				}
			}
		}

		internal static void TriggerRecompilation()
		{
		}

		internal static void UnloadAdditionalLibraries()
		{
			SendCommandToCompiler("$unload_burst_natives");
		}

		internal static void InitialiseDebuggerHooks()
		{
			if (IsApiAvailable("BurstManagedDebuggerPluginV1") && string.IsNullOrEmpty(Environment.GetEnvironmentVariable("BURST_DISABLE_DEBUGGER_HOOKS")))
			{
				SendCommandToCompiler(SendCommandToCompiler("$request_debug_command"));
			}
		}

		internal static bool IsApiAvailable(string apiName)
		{
			return SendCommandToCompiler("$is_native_api_available", apiName) == "True";
		}

		internal static int RequestSetProtocolVersion(int version)
		{
			string text = SendCommandToCompiler("$request_set_protocol_version_editor", $"{version}");
			if (string.IsNullOrEmpty(text) || !int.TryParse(text, out var result))
			{
				result = 0;
			}
			SendCommandToCompiler("$set_protocol_version_burst", $"{result}");
			return result;
		}

		internal static void Initialize(string[] assemblyFolders, string[] ignoreAssemblies)
		{
		}

		internal static void NotifyCompilationStarted(string[] assemblyFolders, string[] ignoreAssemblies)
		{
		}

		internal static void NotifyAssemblyCompilationNotRequired(string assemblyName)
		{
		}

		internal static void NotifyAssemblyCompilationFinished(string assemblyName, string[] defines)
		{
		}

		internal static void NotifyCompilationFinished()
		{
		}

		internal static string AotCompilation(string[] assemblyFolders, string[] assemblyRoots, string options)
		{
			return "failed";
		}

		internal static void SetProfilerCallbacks()
		{
		}

		private static string SendRawCommandToCompiler(string command)
		{
			string disassembly = BurstCompilerService.GetDisassembly(DummyMethodInfo, command);
			if (!string.IsNullOrEmpty(disassembly))
			{
				return disassembly.TrimStart('\n');
			}
			return "";
		}

		private static string SendCommandToCompiler(string commandName, string commandArgs = null)
		{
			if (commandName == null)
			{
				throw new ArgumentNullException("commandName");
			}
			if (commandArgs == null)
			{
				return SendRawCommandToCompiler(commandName);
			}
			return BeginCompilerCommand(commandName).With(commandArgs).SendToCompiler();
		}

		private static void DummyMethod()
		{
		}
	}
	internal enum GlobalSafetyChecksSettingKind
	{
		Off,
		On,
		ForceOn
	}
	public sealed class BurstCompilerOptions
	{
		private const string DisableCompilationArg = "--burst-disable-compilation";

		private const string ForceSynchronousCompilationArg = "--burst-force-sync-compilation";

		internal const string DefaultLibraryName = "lib_burst_generated";

		internal const string BurstInitializeName = "burst.initialize";

		internal const string BurstInitializeExternalsName = "burst.initialize.externals";

		internal const string BurstInitializeStaticsName = "burst.initialize.statics";

		internal const string OptionBurstcSwitch = "+burstc";

		internal const string OptionGroup = "group";

		internal const string OptionPlatform = "platform=";

		internal const string OptionBackend = "backend=";

		internal const string OptionGlobalSafetyChecksSetting = "global-safety-checks-setting=";

		internal const string OptionDisableSafetyChecks = "disable-safety-checks";

		internal const string OptionDisableOpt = "disable-opt";

		internal const string OptionFastMath = "fastmath";

		internal const string OptionTarget = "target=";

		internal const string OptionOptLevel = "opt-level=";

		internal const string OptionLogTimings = "log-timings";

		internal const string OptionOptForSize = "opt-for-size";

		internal const string OptionFloatPrecision = "float-precision=";

		internal const string OptionFloatMode = "float-mode=";

		internal const string OptionBranchProtection = "branch-protection=";

		internal const string OptionDisableWarnings = "disable-warnings=";

		internal const string OptionAssemblyDefines = "assembly-defines=";

		internal const string OptionDump = "dump=";

		internal const string OptionFormat = "format=";

		internal const string OptionDebugTrap = "debugtrap";

		internal const string OptionDisableVectors = "disable-vectors";

		internal const string OptionDebug = "debug=";

		internal const string OptionDebugMode = "debugMode";

		internal const string OptionStaticLinkage = "generate-static-linkage-methods";

		internal const string OptionJobMarshalling = "generate-job-marshalling-methods";

		internal const string OptionTempDirectory = "temp-folder=";

		internal const string OptionEnableDirectExternalLinking = "enable-direct-external-linking";

		internal const string OptionLinkerOptions = "linker-options=";

		internal const string OptionEnableAutoLayoutFallbackCheck = "enable-autolayout-fallback-check";

		internal const string OptionGenerateLinkXml = "generate-link-xml=";

		internal const string OptionMetaDataGeneration = "meta-data-generation=";

		internal const string OptionDisableStringInterpolationInExceptionMessages = "disable-string-interpolation-in-exception-messages";

		internal const string OptionPlatformConfiguration = "platform-configuration=";

		internal const string OptionCacheDirectory = "cache-directory=";

		internal const string OptionJitDisableFunctionCaching = "disable-function-caching";

		internal const string OptionJitDisableAssemblyCaching = "disable-assembly-caching";

		internal const string OptionJitEnableAssemblyCachingLogs = "enable-assembly-caching-logs";

		internal const string OptionJitEnableSynchronousCompilation = "enable-synchronous-compilation";

		internal const string OptionJitCompilationPriority = "compilation-priority=";

		internal const string OptionJitIsForFunctionPointer = "is-for-function-pointer";

		internal const string OptionJitManagedFunctionPointer = "managed-function-pointer=";

		internal const string OptionJitManagedDelegateHandle = "managed-delegate-handle=";

		internal const string OptionEnableInterpreter = "enable-interpreter";

		internal const string OptionAotAssemblyFolder = "assembly-folder=";

		internal const string OptionRootAssembly = "root-assembly=";

		internal const string OptionIncludeRootAssemblyReferences = "include-root-assembly-references=";

		internal const string OptionAotMethod = "method=";

		internal const string OptionAotType = "type=";

		internal const string OptionAotAssembly = "assembly=";

		internal const string OptionAotOutputPath = "output=";

		internal const string OptionAotKeepIntermediateFiles = "keep-intermediate-files";

		internal const string OptionAotNoLink = "nolink";

		internal const string OptionAotOnlyStaticMethods = "only-static-methods";

		internal const string OptionMethodPrefix = "method-prefix=";

		internal const string OptionAotNoNativeToolchain = "no-native-toolchain";

		internal const string OptionAotEmitLlvmObjects = "emit-llvm-objects";

		internal const string OptionAotKeyFolder = "key-folder=";

		internal const string OptionAotDecodeFolder = "decode-folder=";

		internal const string OptionVerbose = "verbose";

		internal const string OptionValidateExternalToolChain = "validate-external-tool-chain";

		internal const string OptionCompilerThreads = "threads=";

		internal const string OptionChunkSize = "chunk-size=";

		internal const string OptionPrintLogOnMissingPInvokeCallbackAttribute = "print-monopinvokecallbackmissing-message";

		internal const string OptionOutputMode = "output-mode=";

		internal const string OptionAlwaysCreateOutput = "always-create-output=";

		internal const string OptionAotPdbSearchPaths = "pdb-search-paths=";

		internal const string OptionSafetyChecks = "safety-checks";

		internal const string OptionLibraryOutputMode = "library-output-mode=";

		internal const string OptionCompilationId = "compilation-id=";

		internal const string OptionTargetFramework = "target-framework=";

		internal const string OptionDiscardAssemblies = "discard-assemblies=";

		internal const string CompilerCommandShutdown = "$shutdown";

		internal const string CompilerCommandCancel = "$cancel";

		internal const string CompilerCommandEnableCompiler = "$enable_compiler";

		internal const string CompilerCommandDisableCompiler = "$disable_compiler";

		internal const string CompilerCommandSetDefaultOptions = "$set_default_options";

		internal const string CompilerCommandTriggerSetupRecompilation = "$trigger_setup_recompilation";

		internal const string CompilerCommandIsCurrentCompilationDone = "$is_current_compilation_done";

		internal const string CompilerCommandTriggerRecompilation = "$trigger_recompilation";

		internal const string CompilerCommandInitialize = "$initialize";

		internal const string CompilerCommandDomainReload = "$domain_reload";

		internal const string CompilerCommandVersionNotification = "$version";

		internal const string CompilerCommandGetTargetCpuFromHost = "$get_target_cpu_from_host";

		internal const string CompilerCommandSetProfileCallbacks = "$set_profile_callbacks";

		internal const string CompilerCommandUnloadBurstNatives = "$unload_burst_natives";

		internal const string CompilerCommandIsNativeApiAvailable = "$is_native_api_available";

		internal const string CompilerCommandILPPCompilation = "$ilpp_compilation";

		internal const string CompilerCommandIsArmTestEnv = "$is_arm_test_env";

		internal const string CompilerCommandNotifyAssemblyCompilationNotRequired = "$notify_assembly_compilation_not_required";

		internal const string CompilerCommandNotifyAssemblyCompilationFinished = "$notify_assembly_compilation_finished";

		internal const string CompilerCommandNotifyCompilationStarted = "$notify_compilation_started";

		internal const string CompilerCommandNotifyCompilationFinished = "$notify_compilation_finished";

		internal const string CompilerCommandAotCompilation = "$aot_compilation";

		internal const string CompilerCommandRequestInitialiseDebuggerCommmand = "$request_debug_command";

		internal const string CompilerCommandInitialiseDebuggerCommmand = "$load_debugger_interface";

		internal const string CompilerCommandRequestSetProtocolVersionEditor = "$request_set_protocol_version_editor";

		internal const string CompilerCommandSetProtocolVersionBurst = "$set_protocol_version_burst";

		internal static readonly bool ForceDisableBurstCompilation;

		private static readonly bool ForceBurstCompilationSynchronously;

		internal static readonly bool IsSecondaryUnityProcess;

		private bool _enableBurstCompilation;

		private bool _enableBurstCompileSynchronously;

		private bool _enableBurstSafetyChecks;

		private bool _enableBurstTimings;

		private bool _enableBurstDebug;

		private bool _forceEnableBurstSafetyChecks;

		private bool IsGlobal { get; }

		public bool IsEnabled
		{
			get
			{
				if (EnableBurstCompilation)
				{
					return !ForceDisableBurstCompilation;
				}
				return false;
			}
		}

		public bool EnableBurstCompilation
		{
			get
			{
				return _enableBurstCompilation;
			}
			set
			{
				if (IsGlobal && ForceDisableBurstCompilation)
				{
					value = false;
				}
				bool num = _enableBurstCompilation != value;
				_enableBurstCompilation = value;
				if (IsGlobal)
				{
					JobsUtility.JobCompilerEnabled = value;
					BurstCompiler._IsEnabled = value;
				}
				if (num)
				{
					OnOptionsChanged();
				}
			}
		}

		public bool EnableBurstCompileSynchronously
		{
			get
			{
				return _enableBurstCompileSynchronously;
			}
			set
			{
				bool num = _enableBurstCompileSynchronously != value;
				_enableBurstCompileSynchronously = value;
				if (num)
				{
					OnOptionsChanged();
				}
			}
		}

		public bool EnableBurstSafetyChecks
		{
			get
			{
				return _enableBurstSafetyChecks;
			}
			set
			{
				bool num = _enableBurstSafetyChecks != value;
				_enableBurstSafetyChecks = value;
				if (num)
				{
					OnOptionsChanged();
					MaybeTriggerRecompilation();
				}
			}
		}

		public bool ForceEnableBurstSafetyChecks
		{
			get
			{
				return _forceEnableBurstSafetyChecks;
			}
			set
			{
				bool num = _forceEnableBurstSafetyChecks != value;
				_forceEnableBurstSafetyChecks = value;
				if (num)
				{
					OnOptionsChanged();
					MaybeTriggerRecompilation();
				}
			}
		}

		public bool EnableBurstDebug
		{
			get
			{
				return _enableBurstDebug;
			}
			set
			{
				bool num = _enableBurstDebug != value;
				_enableBurstDebug = value;
				if (num)
				{
					OnOptionsChanged();
					MaybeTriggerRecompilation();
				}
			}
		}

		[Obsolete("This property is no longer used and will be removed in a future major release")]
		public bool DisableOptimizations
		{
			get
			{
				return false;
			}
			set
			{
			}
		}

		[Obsolete("This property is no longer used and will be removed in a future major release. Use the [BurstCompile(FloatMode = FloatMode.Fast)] on the method directly to enable this feature")]
		public bool EnableFastMath
		{
			get
			{
				return true;
			}
			set
			{
			}
		}

		internal bool EnableBurstTimings
		{
			get
			{
				return _enableBurstTimings;
			}
			set
			{
				bool num = _enableBurstTimings != value;
				_enableBurstTimings = value;
				if (num)
				{
					OnOptionsChanged();
				}
			}
		}

		internal bool RequiresSynchronousCompilation
		{
			get
			{
				if (!EnableBurstCompileSynchronously)
				{
					return ForceBurstCompilationSynchronously;
				}
				return true;
			}
		}

		internal Action OptionsChanged { get; set; }

		internal static string SerialiseCompilationOptionsSafe(string[] roots, string[] folders, string options)
		{
			return SafeStringArrayHelper.SerialiseStringArraySafe(new string[3]
			{
				SafeStringArrayHelper.SerialiseStringArraySafe(roots),
				SafeStringArrayHelper.SerialiseStringArraySafe(folders),
				options
			});
		}

		internal static (string[] roots, string[] folders, string options) DeserialiseCompilationOptionsSafe(string from)
		{
			string[] array = SafeStringArrayHelper.DeserialiseStringArraySafe(from);
			return (SafeStringArrayHelper.DeserialiseStringArraySafe(array[0]), SafeStringArrayHelper.DeserialiseStringArraySafe(array[1]), array[2]);
		}

		private BurstCompilerOptions()
			: this(isGlobal: false)
		{
		}

		internal BurstCompilerOptions(bool isGlobal)
		{
			IsGlobal = isGlobal;
			EnableBurstCompilation = true;
			EnableBurstSafetyChecks = true;
		}

		internal BurstCompilerOptions Clone()
		{
			return new BurstCompilerOptions
			{
				EnableBurstCompilation = EnableBurstCompilation,
				EnableBurstCompileSynchronously = EnableBurstCompileSynchronously,
				EnableBurstSafetyChecks = EnableBurstSafetyChecks,
				EnableBurstTimings = EnableBurstTimings,
				EnableBurstDebug = EnableBurstDebug,
				ForceEnableBurstSafetyChecks = ForceEnableBurstSafetyChecks
			};
		}

		private static bool TryGetAttribute(MemberInfo member, out BurstCompileAttribute attribute)
		{
			attribute = null;
			if (member == null)
			{
				return false;
			}
			attribute = GetBurstCompileAttribute(member);
			if (attribute == null)
			{
				return false;
			}
			return true;
		}

		private static bool TryGetAttribute(Assembly assembly, out BurstCompileAttribute attribute)
		{
			if (assembly == null)
			{
				attribute = null;
				return false;
			}
			attribute = assembly.GetCustomAttribute<BurstCompileAttribute>();
			return attribute != null;
		}

		private static BurstCompileAttribute GetBurstCompileAttribute(MemberInfo memberInfo)
		{
			BurstCompileAttribute customAttribute = memberInfo.GetCustomAttribute<BurstCompileAttribute>();
			if (customAttribute != null)
			{
				return customAttribute;
			}
			foreach (Attribute customAttribute2 in memberInfo.GetCustomAttributes())
			{
				if (customAttribute2.GetType().FullName == "Burst.Compiler.IL.Tests.TestCompilerAttribute")
				{
					List<string> list = new List<string>();
					return new BurstCompileAttribute(FloatPrecision.Standard, FloatMode.Default)
					{
						CompileSynchronously = true,
						Options = list.ToArray()
					};
				}
			}
			return null;
		}

		internal static bool HasBurstCompileAttribute(MemberInfo member)
		{
			if (member == null)
			{
				throw new ArgumentNullException("member");
			}
			BurstCompileAttribute attribute;
			return TryGetAttribute(member, out attribute);
		}

		internal static void MergeAttributes(ref BurstCompileAttribute memberAttribute, in BurstCompileAttribute assemblyAttribute)
		{
			if (memberAttribute.FloatMode == FloatMode.Default)
			{
				memberAttribute.FloatMode = assemblyAttribute.FloatMode;
			}
			if (memberAttribute.FloatPrecision == FloatPrecision.Standard)
			{
				memberAttribute.FloatPrecision = assemblyAttribute.FloatPrecision;
			}
			if (memberAttribute.OptimizeFor == OptimizeFor.Default)
			{
				memberAttribute.OptimizeFor = assemblyAttribute.OptimizeFor;
			}
			if (!memberAttribute._compileSynchronously.HasValue && assemblyAttribute._compileSynchronously.HasValue)
			{
				memberAttribute._compileSynchronously = assemblyAttribute._compileSynchronously;
			}
			if (!memberAttribute._debug.HasValue && assemblyAttribute._debug.HasValue)
			{
				memberAttribute._debug = assemblyAttribute._debug;
			}
			if (!memberAttribute._disableDirectCall.HasValue && assemblyAttribute._disableDirectCall.HasValue)
			{
				memberAttribute._disableDirectCall = assemblyAttribute._disableDirectCall;
			}
			if (!memberAttribute._disableSafetyChecks.HasValue && assemblyAttribute._disableSafetyChecks.HasValue)
			{
				memberAttribute._disableSafetyChecks = assemblyAttribute._disableSafetyChecks;
			}
		}

		internal bool TryGetOptions(MemberInfo member, out string flagsOut, bool isForILPostProcessing = false, bool isForCompilerClient = false)
		{
			flagsOut = null;
			if (!TryGetAttribute(member, out var attribute))
			{
				return false;
			}
			if (TryGetAttribute(member.Module.Assembly, out var attribute2))
			{
				MergeAttributes(ref attribute, in attribute2);
			}
			flagsOut = GetOptions(attribute, isForILPostProcessing, isForCompilerClient);
			return true;
		}

		internal string GetOptions(BurstCompileAttribute attr = null, bool isForILPostProcessing = false, bool isForCompilerClient = false)
		{
			StringBuilder stringBuilder = new StringBuilder();
			if (!isForCompilerClient && ((attr != null && attr.CompileSynchronously) || RequiresSynchronousCompilation))
			{
				AddOption(stringBuilder, GetOption("enable-synchronous-compilation"));
			}
			AddOption(stringBuilder, GetOption("debug=", "LineOnly"));
			if (isForILPostProcessing)
			{
				AddOption(stringBuilder, GetOption("compilation-priority=", CompilationPriority.ILPP));
			}
			if (attr != null)
			{
				if (attr.FloatMode != 0)
				{
					AddOption(stringBuilder, GetOption("float-mode=", attr.FloatMode));
				}
				if (attr.FloatPrecision != 0)
				{
					AddOption(stringBuilder, GetOption("float-precision=", attr.FloatPrecision));
				}
				if (attr.DisableSafetyChecks)
				{
					AddOption(stringBuilder, GetOption("disable-safety-checks"));
				}
				if (attr.Options != null)
				{
					string[] options = attr.Options;
					foreach (string text in options)
					{
						if (!string.IsNullOrEmpty(text))
						{
							AddOption(stringBuilder, text);
						}
					}
				}
				switch (attr.OptimizeFor)
				{
				case OptimizeFor.Default:
				case OptimizeFor.Balanced:
					AddOption(stringBuilder, GetOption("opt-level=", 2));
					break;
				case OptimizeFor.Performance:
					AddOption(stringBuilder, GetOption("opt-level=", 3));
					break;
				case OptimizeFor.Size:
					AddOption(stringBuilder, GetOption("opt-for-size"));
					AddOption(stringBuilder, GetOption("opt-level=", 3));
					break;
				case OptimizeFor.FastCompilation:
					AddOption(stringBuilder, GetOption("opt-level=", 1));
					break;
				}
			}
			if (ForceEnableBurstSafetyChecks)
			{
				AddOption(stringBuilder, GetOption("global-safety-checks-setting=", GlobalSafetyChecksSettingKind.ForceOn));
			}
			else if (EnableBurstSafetyChecks)
			{
				AddOption(stringBuilder, GetOption("global-safety-checks-setting=", GlobalSafetyChecksSettingKind.On));
			}
			else
			{
				AddOption(stringBuilder, GetOption("global-safety-checks-setting=", GlobalSafetyChecksSettingKind.Off));
			}
			if (EnableBurstTimings)
			{
				AddOption(stringBuilder, GetOption("log-timings"));
			}
			if (EnableBurstDebug || (attr != null && attr.Debug))
			{
				AddOption(stringBuilder, GetOption("debugMode"));
			}
			AddOption(stringBuilder, GetOption("temp-folder=", Path.Combine(Environment.CurrentDirectory, "Temp", "Burst")));
			return stringBuilder.ToString();
		}

		private static void AddOption(StringBuilder builder, string option)
		{
			if (builder.Length != 0)
			{
				builder.Append('\n');
			}
			builder.Append(option);
		}

		internal static string GetOption(string optionName, object value = null)
		{
			if (optionName == null)
			{
				throw new ArgumentNullException("optionName");
			}
			return "--" + optionName + (value ?? string.Empty);
		}

		private void OnOptionsChanged()
		{
			OptionsChanged?.Invoke();
		}

		private void MaybeTriggerRecompilation()
		{
		}

		static BurstCompilerOptions()
		{
			string[] commandLineArgs = Environment.GetCommandLineArgs();
			foreach (string text in commandLineArgs)
			{
				if (!(text == "--burst-disable-compilation"))
				{
					if (text == "--burst-force-sync-compilation")
					{
						ForceBurstCompilationSynchronously = true;
					}
				}
				else
				{
					ForceDisableBurstCompilation = true;
				}
			}
			if (CheckIsSecondaryUnityProcess())
			{
				ForceDisableBurstCompilation = true;
				IsSecondaryUnityProcess = true;
			}
		}

		private static bool CheckIsSecondaryUnityProcess()
		{
			return false;
		}
	}
	internal enum BurstTargetCpu
	{
		Auto,
		X86_SSE2,
		X86_SSE4,
		X64_SSE2,
		X64_SSE4,
		AVX,
		AVX2,
		WASM32,
		ARMV7A_NEON32,
		ARMV8A_AARCH64,
		THUMB2_NEON32,
		ARMV8A_AARCH64_HALFFP,
		ARMV9A
	}
	[Flags]
	internal enum NativeDumpFlags
	{
		None = 0,
		IL = 1,
		Unused = 2,
		IR = 4,
		IROptimized = 8,
		Asm = 0x10,
		Function = 0x20,
		Analysis = 0x40,
		IRPassAnalysis = 0x80,
		ILPre = 0x100,
		IRPerEntryPoint = 0x200,
		All = 0x3FD
	}
	internal enum CompilationPriority
	{
		EagerCompilationSynchronous,
		Asynchronous,
		ILPP,
		EagerCompilationAsynchronous
	}
	public enum BurstExecutionEnvironment
	{
		Default = 0,
		NonDeterministic = 0,
		Deterministic = 1
	}
	public static class BurstRuntime
	{
		[StructLayout(LayoutKind.Sequential, Size = 1)]
		private struct HashCode32<T>
		{
			public static readonly int Value = HashStringWithFNV1A32(typeof(T).AssemblyQualifiedName);
		}

		[StructLayout(LayoutKind.Sequential, Size = 1)]
		private struct HashCode64<T>
		{
			public static readonly long Value = HashStringWithFNV1A64(typeof(T).AssemblyQualifiedName);
		}

		internal class PreserveAttribute : Attribute
		{
		}

		public static int GetHashCode32<T>()
		{
			return HashCode32<T>.Value;
		}

		public static int GetHashCode32(Type type)
		{
			return HashStringWithFNV1A32(type.AssemblyQualifiedName);
		}

		public static long GetHashCode64<T>()
		{
			return HashCode64<T>.Value;
		}

		public static long GetHashCode64(Type type)
		{
			return HashStringWithFNV1A64(type.AssemblyQualifiedName);
		}

		internal static int HashStringWithFNV1A32(string text)
		{
			uint num = 2166136261u;
			foreach (char c in text)
			{
				num = 16777619 * (num ^ (byte)(c & 0xFF));
				num = 16777619 * (num ^ (byte)((int)c >> 8));
			}
			return (int)num;
		}

		internal static long HashStringWithFNV1A64(string text)
		{
			ulong num = 14695981039346656037uL;
			foreach (char c in text)
			{
				num = 1099511628211L * (num ^ (byte)(c & 0xFF));
				num = 1099511628211L * (num ^ (byte)((int)c >> 8));
			}
			return (long)num;
		}

		public static bool LoadAdditionalLibrary(string pathToLibBurstGenerated)
		{
			if (BurstCompiler.IsLoadAdditionalLibrarySupported())
			{
				return LoadAdditionalLibraryInternal(pathToLibBurstGenerated);
			}
			return false;
		}

		internal static bool LoadAdditionalLibraryInternal(string pathToLibBurstGenerated)
		{
			return (bool)typeof(BurstCompilerService).GetMethod("LoadBurstLibrary").Invoke(null, new object[1] { pathToLibBurstGenerated });
		}

		[Preserve]
		internal unsafe static void RuntimeLog(byte* message, int logType, byte* fileName, int lineNumber)
		{
			BurstCompilerService.RuntimeLog((void*)null, (BurstLogType)logType, message, fileName, lineNumber);
		}

		internal static void Initialize()
		{
		}

		[Preserve]
		internal static void PreventRequiredAttributeStrip()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			new BurstDiscardAttribute();
			new ConditionalAttribute("HEJSA");
			new JobProducerTypeAttribute(typeof(BurstRuntime));
		}

		[Preserve]
		internal unsafe static void Log(byte* message, int logType, byte* fileName, int lineNumber)
		{
			BurstCompilerService.Log((void*)null, (BurstLogType)logType, message, (byte*)null, lineNumber);
		}

		public unsafe static byte* GetUTF8LiteralPointer(string str, out int byteCount)
		{
			throw new NotImplementedException("This function only works from Burst");
		}
	}
	internal static class BurstString
	{
		internal class PreserveAttribute : Attribute
		{
		}

		private enum NumberBufferKind
		{
			Integer,
			Float
		}

		private struct NumberBuffer
		{
			private unsafe readonly byte* _buffer;

			public NumberBufferKind Kind;

			public int DigitsCount;

			public int Scale;

			public readonly bool IsNegative;

			public unsafe NumberBuffer(NumberBufferKind kind, byte* buffer, int digitsCount, int scale, bool isNegative)
			{
				Kind = kind;
				_buffer = buffer;
				DigitsCount = digitsCount;
				Scale = scale;
				IsNegative = isNegative;
			}

			public unsafe byte* GetDigitsPointer()
			{
				return _buffer;
			}
		}

		public enum NumberFormatKind : byte
		{
			General,
			Decimal,
			DecimalForceSigned,
			Hexadecimal
		}

		public struct FormatOptions
		{
			public NumberFormatKind Kind;

			public sbyte AlignAndSize;

			public byte Specifier;

			public bool Lowercase;

			public bool Uppercase => !Lowercase;

			public FormatOptions(NumberFormatKind kind, sbyte alignAndSize, byte specifier, bool lowercase)
			{
				this = default(FormatOptions);
				Kind = kind;
				AlignAndSize = alignAndSize;
				Specifier = specifier;
				Lowercase = lowercase;
			}

			public unsafe int EncodeToRaw()
			{
				FormatOptions formatOptions = this;
				return *(int*)(&formatOptions);
			}

			public int GetBase()
			{
				if (Kind == NumberFormatKind.Hexadecimal)
				{
					return 16;
				}
				return 10;
			}

			public override string ToString()
			{
				return string.Format("{0}: {1}, {2}: {3}, {4}: {5}, {6}: {7}", "Kind", Kind, "AlignAndSize", AlignAndSize, "Specifier", Specifier, "Uppercase", Uppercase);
			}
		}

		public struct tBigInt
		{
			private const int c_BigInt_MaxBlocks = 35;

			public int m_length;

			public unsafe fixed uint m_blocks[35];

			public int GetLength()
			{
				return m_length;
			}

			public unsafe uint GetBlock(int idx)
			{
				return m_blocks[idx];
			}

			public void SetZero()
			{
				m_length = 0;
			}

			public bool IsZero()
			{
				return m_length == 0;
			}

			public unsafe void SetU64(ulong val)
			{
				if (val > uint.MaxValue)
				{
					m_blocks[0] = (uint)(val & 0xFFFFFFFFu);
					m_blocks[1] = (uint)((val >> 32) & 0xFFFFFFFFu);
					m_length = 2;
				}
				else if (val != 0L)
				{
					m_blocks[0] = (uint)(val & 0xFFFFFFFFu);
					m_length = 1;
				}
				else
				{
					m_length = 0;
				}
			}

			public unsafe void SetU32(uint val)
			{
				if (val != 0)
				{
					m_blocks[0] = val;
					m_length = ((val != 0) ? 1 : 0);
				}
				else
				{
					m_length = 0;
				}
			}

			public unsafe uint GetU32()
			{
				if (m_length != 0)
				{
					return m_blocks[0];
				}
				return 0u;
			}
		}

		public enum CutoffMode
		{
			Unique,
			TotalLength,
			FractionLength
		}

		public enum PrintFloatFormat
		{
			Positional,
			Scientific
		}

		[StructLayout(LayoutKind.Explicit)]
		public struct tFloatUnion32
		{
			[FieldOffset(0)]
			public float m_floatingPoint;

			[FieldOffset(0)]
			public uint m_integer;

			public bool IsNegative()
			{
				return m_integer >> 31 != 0;
			}

			public uint GetExponent()
			{
				return (m_integer >> 23) & 0xFFu;
			}

			public uint GetMantissa()
			{
				return m_integer & 0x7FFFFFu;
			}
		}

		[StructLayout(LayoutKind.Explicit)]
		public struct tFloatUnion64
		{
			[FieldOffset(0)]
			public double m_floatingPoint;

			[FieldOffset(0)]
			public ulong m_integer;

			public bool IsNegative()
			{
				return m_integer >> 63 != 0;
			}

			public uint GetExponent()
			{
				return (uint)((m_integer >> 52) & 0x7FF);
			}

			public ulong GetMantissa()
			{
				return m_integer & 0xFFFFFFFFFFFFFuL;
			}
		}

		private static readonly char[] SplitByColon = new char[1] { ':' };

		private static readonly byte[] logTable = new byte[256]
		{
			0, 0, 1, 1, 2, 2, 2, 2, 3, 3,
			3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
			4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
			4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
			5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
			5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
			5, 5, 5, 5, 6, 6, 6, 6, 6, 6,
			6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
			6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
			6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
			6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
			6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
			6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
			7, 7, 7, 7, 7, 7
		};

		private static readonly uint[] g_PowerOf10_U32 = new uint[8] { 1u, 10u, 100u, 1000u, 10000u, 100000u, 1000000u, 10000000u };

		private static readonly byte[] InfinityString = new byte[8] { 73, 110, 102, 105, 110, 105, 116, 121 };

		private static readonly byte[] NanString = new byte[3] { 78, 97, 78 };

		private const int SinglePrecision = 9;

		private const int DoublePrecision = 17;

		internal const int SingleNumberBufferLength = 10;

		internal const int DoubleNumberBufferLength = 18;

		private const int SinglePrecisionCustomFormat = 7;

		private const int DoublePrecisionCustomFormat = 15;

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		[Preserve]
		public unsafe static void CopyFixedString(byte* dest, int destLength, byte* src, int srcLength)
		{
			int num = ((srcLength > destLength) ? destLength : srcLength);
			*(ushort*)(dest - 2) = (ushort)num;
			dest[num] = 0;
			UnsafeUtility.MemCpy((void*)dest, (void*)src, (long)num);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, byte* src, int srcLength, int formatOptionsRaw)
		{
			FormatOptions formatOptions = *(FormatOptions*)(&formatOptionsRaw);
			if (!AlignLeft(dest, ref destIndex, destLength, formatOptions.AlignAndSize, srcLength))
			{
				int num = destLength - destIndex;
				int num2 = ((srcLength > num) ? num : srcLength);
				if (num2 > 0)
				{
					UnsafeUtility.MemCpy((void*)(dest + destIndex), (void*)src, (long)num2);
					destIndex += num2;
					AlignRight(dest, ref destIndex, destLength, formatOptions.AlignAndSize, srcLength);
				}
			}
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, float value, int formatOptionsRaw)
		{
			FormatOptions formatOptions = *(FormatOptions*)(&formatOptionsRaw);
			ConvertFloatToString(dest, ref destIndex, destLength, value, formatOptions);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, double value, int formatOptionsRaw)
		{
			FormatOptions formatOptions = *(FormatOptions*)(&formatOptionsRaw);
			ConvertDoubleToString(dest, ref destIndex, destLength, value, formatOptions);
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, bool value, int formatOptionsRaw)
		{
			int length = (value ? 4 : 5);
			FormatOptions formatOptions = *(FormatOptions*)(&formatOptionsRaw);
			if (AlignLeft(dest, ref destIndex, destLength, formatOptions.AlignAndSize, length))
			{
				return;
			}
			if (value)
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 84;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 114;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 117;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 101;
			}
			else
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 70;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 97;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 108;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 115;
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 101;
			}
			AlignRight(dest, ref destIndex, destLength, formatOptions.AlignAndSize, length);
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, char value, int formatOptionsRaw)
		{
			int num = ((value <= '\u007f') ? 1 : ((value <= '߿') ? 2 : 3));
			FormatOptions formatOptions = *(FormatOptions*)(&formatOptionsRaw);
			if (AlignLeft(dest, ref destIndex, destLength, formatOptions.AlignAndSize, 1))
			{
				return;
			}
			switch (num)
			{
			case 1:
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = (byte)value;
				break;
			case 2:
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = (byte)((uint)((int)value >> 6) | 0xC0u);
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = (byte)((value & 0x3Fu) | 0x80u);
				break;
			case 3:
				if (value >= '\ud800' && value <= '\udfff')
				{
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = 239;
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = 191;
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = 189;
				}
				else
				{
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = (byte)((uint)((int)value >> 12) | 0xE0u);
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = (byte)(((uint)((int)value >> 6) & 0x3Fu) | 0x80u);
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = (byte)((value & 0x3Fu) | 0x80u);
				}
				break;
			}
			AlignRight(dest, ref destIndex, destLength, formatOptions.AlignAndSize, 1);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, byte value, int formatOptionsRaw)
		{
			Format(dest, ref destIndex, destLength, (ulong)value, formatOptionsRaw);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, ushort value, int formatOptionsRaw)
		{
			Format(dest, ref destIndex, destLength, (ulong)value, formatOptionsRaw);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, uint value, int formatOptionsRaw)
		{
			FormatOptions options = *(FormatOptions*)(&formatOptionsRaw);
			ConvertUnsignedIntegerToString(dest, ref destIndex, destLength, value, options);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, ulong value, int formatOptionsRaw)
		{
			FormatOptions options = *(FormatOptions*)(&formatOptionsRaw);
			ConvertUnsignedIntegerToString(dest, ref destIndex, destLength, value, options);
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, sbyte value, int formatOptionsRaw)
		{
			FormatOptions options = *(FormatOptions*)(&formatOptionsRaw);
			if (options.Kind == NumberFormatKind.Hexadecimal)
			{
				ConvertUnsignedIntegerToString(dest, ref destIndex, destLength, (byte)value, options);
			}
			else
			{
				ConvertIntegerToString(dest, ref destIndex, destLength, value, options);
			}
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, short value, int formatOptionsRaw)
		{
			FormatOptions options = *(FormatOptions*)(&formatOptionsRaw);
			if (options.Kind == NumberFormatKind.Hexadecimal)
			{
				ConvertUnsignedIntegerToString(dest, ref destIndex, destLength, (ushort)value, options);
			}
			else
			{
				ConvertIntegerToString(dest, ref destIndex, destLength, value, options);
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, int value, int formatOptionsRaw)
		{
			FormatOptions options = *(FormatOptions*)(&formatOptionsRaw);
			if (options.Kind == NumberFormatKind.Hexadecimal)
			{
				ConvertUnsignedIntegerToString(dest, ref destIndex, destLength, (uint)value, options);
			}
			else
			{
				ConvertIntegerToString(dest, ref destIndex, destLength, value, options);
			}
		}

		[Preserve]
		public unsafe static void Format(byte* dest, ref int destIndex, int destLength, long value, int formatOptionsRaw)
		{
			FormatOptions options = *(FormatOptions*)(&formatOptionsRaw);
			if (options.Kind == NumberFormatKind.Hexadecimal)
			{
				ConvertUnsignedIntegerToString(dest, ref destIndex, destLength, (ulong)value, options);
			}
			else
			{
				ConvertIntegerToString(dest, ref destIndex, destLength, value, options);
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		private unsafe static void ConvertUnsignedIntegerToString(byte* dest, ref int destIndex, int destLength, ulong value, FormatOptions options)
		{
			uint @base = (uint)options.GetBase();
			if (@base >= 2 && @base <= 36)
			{
				int num = 0;
				ulong num2 = value;
				do
				{
					num2 /= @base;
					num++;
				}
				while (num2 != 0L);
				int num3 = num - 1;
				byte* ptr = stackalloc byte[(int)(uint)(num + 1)];
				num2 = value;
				do
				{
					ptr[num3--] = ValueToIntegerChar((int)(num2 % @base), options.Uppercase);
					num2 /= @base;
				}
				while (num2 != 0L);
				ptr[num] = 0;
				NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, ptr, num, num, isNegative: false);
				FormatNumber(dest, ref destIndex, destLength, ref number, options.Specifier, options);
			}
		}

		private static int GetLengthIntegerToString(long value, int basis, int zeroPadding)
		{
			int num = 0;
			long num2 = value;
			do
			{
				num2 /= basis;
				num++;
			}
			while (num2 != 0L);
			if (num < zeroPadding)
			{
				num = zeroPadding;
			}
			if (value < 0)
			{
				num++;
			}
			return num;
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		private unsafe static void ConvertIntegerToString(byte* dest, ref int destIndex, int destLength, long value, FormatOptions options)
		{
			int @base = options.GetBase();
			if (@base >= 2 && @base <= 36)
			{
				int num = 0;
				long num2 = value;
				do
				{
					num2 /= @base;
					num++;
				}
				while (num2 != 0L);
				byte* ptr = stackalloc byte[(int)(uint)(num + 1)];
				num2 = value;
				int num3 = num - 1;
				do
				{
					ptr[num3--] = ValueToIntegerChar((int)(num2 % @base), options.Uppercase);
					num2 /= @base;
				}
				while (num2 != 0L);
				ptr[num] = 0;
				NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, ptr, num, num, value < 0);
				FormatNumber(dest, ref destIndex, destLength, ref number, options.Specifier, options);
			}
		}

		private unsafe static void FormatNumber(byte* dest, ref int destIndex, int destLength, ref NumberBuffer number, int nMaxDigits, FormatOptions options)
		{
			bool isCorrectlyRounded = number.Kind == NumberBufferKind.Float;
			if (number.Kind == NumberBufferKind.Integer && options.Kind == NumberFormatKind.General && options.Specifier == 0)
			{
				options.Kind = NumberFormatKind.Decimal;
			}
			NumberFormatKind kind = options.Kind;
			if (kind != 0 && kind - 1 <= NumberFormatKind.DecimalForceSigned)
			{
				int num = number.DigitsCount;
				int specifier = options.Specifier;
				int zeroPadding = 0;
				if (num < specifier)
				{
					zeroPadding = specifier - num;
					num = specifier;
				}
				bool flag = options.Kind == NumberFormatKind.DecimalForceSigned;
				num += ((number.IsNegative || flag) ? 1 : 0);
				if (!AlignLeft(dest, ref destIndex, destLength, options.AlignAndSize, num))
				{
					FormatDecimalOrHexadecimal(dest, ref destIndex, destLength, ref number, zeroPadding, flag);
					AlignRight(dest, ref destIndex, destLength, options.AlignAndSize, num);
				}
			}
			else
			{
				if (nMaxDigits < 1)
				{
					nMaxDigits = number.DigitsCount;
				}
				RoundNumber(ref number, nMaxDigits, isCorrectlyRounded);
				int num = GetLengthForFormatGeneral(ref number, nMaxDigits);
				if (!AlignLeft(dest, ref destIndex, destLength, options.AlignAndSize, num))
				{
					FormatGeneral(dest, ref destIndex, destLength, ref number, nMaxDigits, (byte)(options.Uppercase ? 69 : 101));
					AlignRight(dest, ref destIndex, destLength, options.AlignAndSize, num);
				}
			}
		}

		private unsafe static void FormatDecimalOrHexadecimal(byte* dest, ref int destIndex, int destLength, ref NumberBuffer number, int zeroPadding, bool outputPositiveSign)
		{
			if (number.IsNegative)
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 45;
			}
			else if (outputPositiveSign)
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 43;
			}
			for (int i = 0; i < zeroPadding; i++)
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 48;
			}
			int digitsCount = number.DigitsCount;
			byte* digitsPointer = number.GetDigitsPointer();
			for (int j = 0; j < digitsCount; j++)
			{
				if (destIndex >= destLength)
				{
					break;
				}
				dest[destIndex++] = digitsPointer[j];
			}
		}

		private static byte ValueToIntegerChar(int value, bool uppercase)
		{
			value = ((value < 0) ? (-value) : value);
			if (value <= 9)
			{
				return (byte)(48 + value);
			}
			if (value < 36)
			{
				return (byte)((uppercase ? 65 : 97) + (value - 10));
			}
			return 63;
		}

		private static void OptsSplit(string fullFormat, out string padding, out string format)
		{
			string[] array = fullFormat.Split(SplitByColon, StringSplitOptions.RemoveEmptyEntries);
			format = array[0];
			padding = null;
			if (array.Length == 2)
			{
				padding = format;
				format = array[1];
				return;
			}
			if (array.Length == 1)
			{
				if (format[0] == ',')
				{
					padding = format;
					format = null;
				}
				return;
			}
			throw new ArgumentException($"Format `{format}` not supported. Invalid number {array.Length} of :. Expecting no more than one.");
		}

		public static FormatOptions ParseFormatToFormatOptions(string fullFormat)
		{
			if (string.IsNullOrWhiteSpace(fullFormat))
			{
				return default(FormatOptions);
			}
			OptsSplit(fullFormat, out var padding, out var format);
			format = format?.Trim();
			padding = padding?.Trim();
			int result = 0;
			NumberFormatKind kind = NumberFormatKind.General;
			bool lowercase = false;
			int num = 0;
			if (!string.IsNullOrEmpty(format))
			{
				switch (format[0])
				{
				case 'G':
					kind = NumberFormatKind.General;
					break;
				case 'g':
					kind = NumberFormatKind.General;
					lowercase = true;
					break;
				case 'D':
					kind = NumberFormatKind.Decimal;
					break;
				case 'd':
					kind = NumberFormatKind.Decimal;
					lowercase = true;
					break;
				case 'X':
					kind = NumberFormatKind.Hexadecimal;
					break;
				case 'x':
					kind = NumberFormatKind.Hexadecimal;
					lowercase = true;
					break;
				default:
					throw new ArgumentException("Format `" + format + "` not supported. Only G, g, D, d, X, x are supported.");
				}
				if (format.Length > 1)
				{
					string text = format.Substring(1);
					if (!uint.TryParse(text, out var result2))
					{
						throw new ArgumentException("Expecting an unsigned integer for specifier `" + format + "` instead of " + text + ".");
					}
					num = (int)result2;
				}
			}
			if (!string.IsNullOrEmpty(padding))
			{
				if (padding[0] != ',')
				{
					throw new ArgumentException("Invalid padding `" + padding + "`, expecting to start with a leading `,` comma.");
				}
				string text2 = padding.Substring(1);
				if (!int.TryParse(text2, out result))
				{
					throw new ArgumentException("Expecting an integer for align/size padding `" + text2 + "`.");
				}
			}
			return new FormatOptions(kind, (sbyte)result, (byte)num, lowercase);
		}

		private unsafe static bool AlignRight(byte* dest, ref int destIndex, int destLength, int align, int length)
		{
			if (align < 0)
			{
				align = -align;
				return AlignLeft(dest, ref destIndex, destLength, align, length);
			}
			return false;
		}

		private unsafe static bool AlignLeft(byte* dest, ref int destIndex, int destLength, int align, int length)
		{
			if (align > 0)
			{
				while (length < align)
				{
					if (destIndex >= destLength)
					{
						return true;
					}
					dest[destIndex++] = 32;
					length++;
				}
			}
			return false;
		}

		private unsafe static int GetLengthForFormatGeneral(ref NumberBuffer number, int nMaxDigits)
		{
			int num = 0;
			int i = number.Scale;
			bool flag = false;
			if (i > nMaxDigits || i < -3)
			{
				i = 1;
				flag = true;
			}
			byte* ptr = number.GetDigitsPointer();
			if (number.IsNegative)
			{
				num++;
			}
			if (i > 0)
			{
				do
				{
					if (*ptr != 0)
					{
						ptr++;
					}
					num++;
				}
				while (--i > 0);
			}
			else
			{
				num++;
			}
			if (*ptr != 0 || i < 0)
			{
				num++;
				for (; i < 0; i++)
				{
					num++;
				}
				for (; *ptr != 0; ptr++)
				{
					num++;
				}
			}
			if (flag)
			{
				num++;
				int num2 = number.Scale - 1;
				if (num2 >= 0)
				{
					num++;
				}
				num += GetLengthIntegerToString(num2, 10, 2);
			}
			return num;
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		private unsafe static void FormatGeneral(byte* dest, ref int destIndex, int destLength, ref NumberBuffer number, int nMaxDigits, byte expChar)
		{
			int i = number.Scale;
			bool flag = false;
			if (i > nMaxDigits || i < -3)
			{
				i = 1;
				flag = true;
			}
			byte* digitsPointer = number.GetDigitsPointer();
			if (number.IsNegative)
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 45;
			}
			if (i > 0)
			{
				do
				{
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = (byte)((*digitsPointer != 0) ? (*(digitsPointer++)) : 48);
				}
				while (--i > 0);
			}
			else
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 48;
			}
			if (*digitsPointer != 0 || i < 0)
			{
				if (destIndex >= destLength)
				{
					return;
				}
				dest[destIndex++] = 46;
				for (; i < 0; i++)
				{
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = 48;
				}
				while (*digitsPointer != 0)
				{
					if (destIndex >= destLength)
					{
						return;
					}
					dest[destIndex++] = *(digitsPointer++);
				}
			}
			if (flag && destIndex < destLength)
			{
				dest[destIndex++] = expChar;
				int num = number.Scale - 1;
				FormatOptions options = new FormatOptions(NumberFormatKind.DecimalForceSigned, 0, 2, lowercase: false);
				ConvertIntegerToString(dest, ref destIndex, destLength, num, options);
			}
		}

		private unsafe static void RoundNumber(ref NumberBuffer number, int pos, bool isCorrectlyRounded)
		{
			byte* digitsPointer = number.GetDigitsPointer();
			int i;
			for (i = 0; i < pos && digitsPointer[i] != 0; i++)
			{
			}
			if (i == pos && ShouldRoundUp(digitsPointer, i, isCorrectlyRounded))
			{
				while (i > 0 && digitsPointer[i - 1] == 57)
				{
					i--;
				}
				if (i > 0)
				{
					byte* num = digitsPointer + (i - 1);
					(*num)++;
				}
				else
				{
					number.Scale++;
					*digitsPointer = 49;
					i = 1;
				}
			}
			else
			{
				while (i > 0 && digitsPointer[i - 1] == 48)
				{
					i--;
				}
			}
			if (i == 0)
			{
				number.Scale = 0;
			}
			digitsPointer[i] = 0;
			number.DigitsCount = i;
		}

		private unsafe static bool ShouldRoundUp(byte* dig, int i, bool isCorrectlyRounded)
		{
			byte b = dig[i];
			if (b == 0 || isCorrectlyRounded)
			{
				return false;
			}
			return b >= 53;
		}

		private static uint LogBase2(uint val)
		{
			uint num = val >> 24;
			if (num != 0)
			{
				return (uint)(24 + logTable[num]);
			}
			num = val >> 16;
			if (num != 0)
			{
				return (uint)(16 + logTable[num]);
			}
			num = val >> 8;
			if (num != 0)
			{
				return (uint)(8 + logTable[num]);
			}
			return logTable[val];
		}

		private unsafe static int BigInt_Compare(in tBigInt lhs, in tBigInt rhs)
		{
			int num = lhs.m_length - rhs.m_length;
			if (num != 0)
			{
				return num;
			}
			for (int num2 = lhs.m_length - 1; num2 >= 0; num2--)
			{
				if (lhs.m_blocks[num2] != rhs.m_blocks[num2])
				{
					if (lhs.m_blocks[num2] > rhs.m_blocks[num2])
					{
						return 1;
					}
					return -1;
				}
			}
			return 0;
		}

		private static void BigInt_Add(out tBigInt pResult, in tBigInt lhs, in tBigInt rhs)
		{
			if (lhs.m_length < rhs.m_length)
			{
				BigInt_Add_internal(out pResult, in rhs, in lhs);
			}
			else
			{
				BigInt_Add_internal(out pResult, in lhs, in rhs);
			}
		}

		private unsafe static void BigInt_Add_internal(out tBigInt pResult, in tBigInt pLarge, in tBigInt pSmall)
		{
			int length = pLarge.m_length;
			int length2 = pSmall.m_length;
			pResult.m_length = length;
			ulong num = 0uL;
			fixed (uint* ptr = pLarge.m_blocks)
			{
				fixed (uint* ptr3 = pSmall.m_blocks)
				{
					fixed (uint* ptr5 = pResult.m_blocks)
					{
						uint* ptr2 = ptr;
						uint* ptr4 = ptr3;
						uint* ptr6 = ptr5;
						uint* ptr7 = ptr2 + length;
						uint* ptr8 = ptr4 + length2;
						while (ptr4 != ptr8)
						{
							ulong num2 = num + *ptr2 + *ptr4;
							num = num2 >> 32;
							*ptr6 = (uint)(num2 & 0xFFFFFFFFu);
							ptr2++;
							ptr4++;
							ptr6++;
						}
						while (ptr2 != ptr7)
						{
							ulong num3 = num + *ptr2;
							num = num3 >> 32;
							*ptr6 = (uint)(num3 & 0xFFFFFFFFu);
							ptr2++;
							ptr6++;
						}
						if (num != 0L)
						{
							*ptr6 = 1u;
							pResult.m_length = length + 1;
						}
						else
						{
							pResult.m_length = length;
						}
					}
				}
			}
		}

		private static void BigInt_Multiply(out tBigInt pResult, in tBigInt lhs, in tBigInt rhs)
		{
			if (lhs.m_length < rhs.m_length)
			{
				BigInt_Multiply_internal(out pResult, in rhs, in lhs);
			}
			else
			{
				BigInt_Multiply_internal(out pResult, in lhs, in rhs);
			}
		}

		private unsafe static void BigInt_Multiply_internal(out tBigInt pResult, in tBigInt pLarge, in tBigInt pSmall)
		{
			int num = pLarge.m_length + pSmall.m_length;
			for (int i = 0; i < num; i++)
			{
				pResult.m_blocks[i] = 0u;
			}
			fixed (uint* ptr = pLarge.m_blocks)
			{
				uint* ptr2 = ptr + pLarge.m_length;
				fixed (uint* ptr6 = pResult.m_blocks)
				{
					fixed (uint* ptr3 = pSmall.m_blocks)
					{
						uint* ptr4 = ptr3;
						uint* ptr5 = ptr4 + pSmall.m_length;
						uint* ptr7 = ptr6;
						while (ptr4 != ptr5)
						{
							uint num2 = *ptr4;
							if (num2 != 0)
							{
								uint* ptr8 = ptr;
								uint* ptr9 = ptr7;
								ulong num3 = 0uL;
								do
								{
									ulong num4 = (ulong)(*ptr9 + (long)(*ptr8) * (long)num2) + num3;
									num3 = num4 >> 32;
									*ptr9 = (uint)(num4 & 0xFFFFFFFFu);
									ptr8++;
									ptr9++;
								}
								while (ptr8 != ptr2);
								*ptr9 = (uint)(num3 & 0xFFFFFFFFu);
							}
							ptr4++;
							ptr7++;
						}
						if (num > 0 && pResult.m_blocks[num - 1] == 0)
						{
							pResult.m_length = num - 1;
						}
						else
						{
							pResult.m_length = num;
						}
					}
				}
			}
		}

		private unsafe static void BigInt_Multiply(out tBigInt pResult, in tBigInt lhs, uint rhs)
		{
			uint num = 0u;
			fixed (uint* ptr = pResult.m_blocks)
			{
				fixed (uint* ptr3 = lhs.m_blocks)
				{
					uint* ptr2 = ptr;
					uint* ptr4 = ptr3;
					uint* ptr5 = ptr4 + lhs.m_length;
					while (ptr4 != ptr5)
					{
						ulong num2 = (ulong)((long)(*ptr4) * (long)rhs + num);
						*ptr2 = (uint)(num2 & 0xFFFFFFFFu);
						num = (uint)(num2 >> 32);
						ptr4++;
						ptr2++;
					}
					if (num != 0)
					{
						*ptr2 = num;
						pResult.m_length = lhs.m_length + 1;
					}
					else
					{
						pResult.m_length = lhs.m_length;
					}
				}
			}
		}

		private unsafe static void BigInt_Multiply2(out tBigInt pResult, in tBigInt input)
		{
			uint num = 0u;
			fixed (uint* ptr = pResult.m_blocks)
			{
				fixed (uint* ptr3 = input.m_blocks)
				{
					uint* ptr2 = ptr;
					uint* ptr4 = ptr3;
					uint* ptr5 = ptr4 + input.m_length;
					while (ptr4 != ptr5)
					{
						uint num2 = *ptr4;
						*ptr2 = (num2 << 1) | num;
						num = num2 >> 31;
						ptr4++;
						ptr2++;
					}
					if (num != 0)
					{
						*ptr2 = num;
						pResult.m_length = input.m_length + 1;
					}
					else
					{
						pResult.m_length = input.m_length;
					}
				}
			}
		}

		private unsafe static void BigInt_Multiply2(ref tBigInt pResult)
		{
			uint num = 0u;
			fixed (uint* ptr = pResult.m_blocks)
			{
				uint* ptr2 = ptr;
				for (uint* ptr3 = ptr2 + pResult.m_length; ptr2 != ptr3; ptr2++)
				{
					uint num2 = *ptr2;
					*ptr2 = (num2 << 1) | num;
					num = num2 >> 31;
				}
				if (num != 0)
				{
					*ptr2 = num;
					pResult.m_length++;
				}
			}
		}

		private unsafe static void BigInt_Multiply10(ref tBigInt pResult)
		{
			ulong num = 0uL;
			fixed (uint* ptr = pResult.m_blocks)
			{
				uint* ptr2 = ptr;
				for (uint* ptr3 = ptr2 + pResult.m_length; ptr2 != ptr3; ptr2++)
				{
					ulong num2 = (ulong)((long)(*ptr2) * 10L) + num;
					*ptr2 = (uint)(num2 & 0xFFFFFFFFu);
					num = num2 >> 32;
				}
				if (num != 0L)
				{
					*ptr2 = (uint)num;
					pResult.m_length++;
				}
			}
		}

		private unsafe static tBigInt g_PowerOf10_Big(int i)
		{
			tBigInt result = default(tBigInt);
			switch (i)
			{
			case 0:
				result.m_length = 1;
				result.m_blocks[0] = 100000000u;
				break;
			case 1:
				result.m_length = 2;
				result.m_blocks[0] = 1874919424u;
				result.m_blocks[1] = 2328306u;
				break;
			case 2:
				result.m_length = 4;
				result.m_blocks[0] = 0u;
				result.m_blocks[1] = 2242703233u;
				result.m_blocks[2] = 762134875u;
				result.m_blocks[3] = 1262u;
				break;
			case 3:
				result.m_length = 7;
				result.m_blocks[0] = 0u;
				result.m_blocks[1] = 0u;
				result.m_blocks[2] = 3211403009u;
				result.m_blocks[3] = 1849224548u;
				result.m_blocks[4] = 3668416493u;
				result.m_blocks[5] = 3913284084u;
				result.m_blocks[6] = 1593091u;
				break;
			case 4:
				result.m_length = 14;
				result.m_blocks[0] = 0u;
				result.m_blocks[1] = 0u;
				result.m_blocks[2] = 0u;
				result.m_blocks[3] = 0u;
				result.m_blocks[4] = 781532673u;
				result.m_blocks[5] = 64985353u;
				result.m_blocks[6] = 253049085u;
				result.m_blocks[7] = 594863151u;
				result.m_blocks[8] = 3553621484u;
				result.m_blocks[9] = 3288652808u;
				result.m_blocks[10] = 3167596762u;
				result.m_blocks[11] = 2788392729u;
				result.m_blocks[12] = 3911132675u;
				result.m_blocks[13] = 590u;
				break;
			default:
				result.m_length = 27;
				result.m_blocks[0] = 0u;
				result.m_blocks[1] = 0u;
				result.m_blocks[2] = 0u;
				result.m_blocks[3] = 0u;
				result.m_blocks[4] = 0u;
				result.m_blocks[5] = 0u;
				result.m_blocks[6] = 0u;
				result.m_blocks[7] = 0u;
				result.m_blocks[8] = 2553183233u;
				result.m_blocks[9] = 3201533787u;
				result.m_blocks[10] = 3638140786u;
				result.m_blocks[11] = 303378311u;
				result.m_blocks[12] = 1809731782u;
				result.m_blocks[13] = 3477761648u;
				result.m_blocks[14] = 3583367183u;
				result.m_blocks[15] = 649228654u;
				result.m_blocks[16] = 2915460784u;
				result.m_blocks[17] = 487929380u;
				result.m_blocks[18] = 1011012442u;
				result.m_blocks[19] = 1677677582u;
				result.m_blocks[20] = 3428152256u;
				result.m_blocks[21] = 1710878487u;
				result.m_blocks[22] = 1438394610u;
				result.m_blocks[23] = 2161952759u;
				result.m_blocks[24] = 4100910556u;
				result.m_blocks[25] = 1608314830u;
				result.m_blocks[26] = 349175u;
				break;
			}
			return result;
		}

		private static void BigInt_Pow10(out tBigInt pResult, uint exponent)
		{
			tBigInt lhs = default(tBigInt);
			tBigInt pResult2 = default(tBigInt);
			uint num = exponent & 7u;
			lhs.SetU32(g_PowerOf10_U32[num]);
			exponent >>= 3;
			int num2 = 0;
			while (exponent != 0)
			{
				if ((exponent & (true ? 1u : 0u)) != 0)
				{
					tBigInt rhs = g_PowerOf10_Big(num2);
					BigInt_Multiply(out pResult2, in lhs, in rhs);
					lhs = pResult2;
					pResult2 = lhs;
				}
				num2++;
				exponent >>= 1;
			}
			pResult = lhs;
	

valheim_Data/Managed/Unity.Mathematics.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using Unity.IL2CPP.CompilerServices;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Unity.Mathematics")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Unity.Mathematics")]
[assembly: AssemblyCopyright("Copyright ©  2017")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("19810344-7387-4155-935F-BDD5CC61F0BF")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: InternalsVisibleTo("Unity.Mathematics.Tests")]
[assembly: InternalsVisibleTo("Unity.Mathematics.PerformanceTests")]
[assembly: InternalsVisibleTo("btests")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[8016]
		{
			0, 0, 0, 3, 0, 0, 0, 80, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 98, 111, 111, 108,
			50, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 82, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 98, 111, 111, 108, 50, 120,
			50, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 82, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 98, 111, 111, 108, 50, 120,
			51, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 82, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 98, 111, 111, 108, 50, 120,
			52, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 80, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 98, 111, 111, 108, 51, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 98, 111, 111, 108, 51, 120, 50, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 98, 111, 111, 108, 51, 120, 51, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 98, 111, 111, 108, 51, 120, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 80, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 98, 111, 111, 108, 52, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 82, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			98, 111, 111, 108, 52, 120, 50, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 82, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			98, 111, 111, 108, 52, 120, 51, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 82, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			98, 111, 111, 108, 52, 120, 52, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 82, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			100, 111, 117, 98, 108, 101, 50, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 84, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			100, 111, 117, 98, 108, 101, 50, 120, 50, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 84, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 100, 111, 117, 98, 108, 101, 50, 120,
			51, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 84, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 100, 111, 117, 98, 108, 101,
			50, 120, 52, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 82, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 100, 111, 117, 98,
			108, 101, 51, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 84, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 100, 111, 117, 98,
			108, 101, 51, 120, 50, 46, 103, 101, 110, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 84,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 100, 111,
			117, 98, 108, 101, 51, 120, 51, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 84, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			100, 111, 117, 98, 108, 101, 51, 120, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 100, 111, 117, 98, 108, 101, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 84, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 100, 111, 117, 98, 108, 101, 52, 120,
			50, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 84, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 100, 111, 117, 98, 108, 101,
			52, 120, 51, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 84, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 100, 111, 117, 98,
			108, 101, 52, 120, 52, 46, 103, 101, 110, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 81,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 102, 108,
			111, 97, 116, 50, 46, 103, 101, 110, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 83, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 109, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 64, 49, 46, 50, 46, 54, 92, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 92, 102, 108, 111,
			97, 116, 50, 120, 50, 46, 103, 101, 110, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 83,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 102, 108,
			111, 97, 116, 50, 120, 51, 46, 103, 101, 110,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			83, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 102,
			108, 111, 97, 116, 50, 120, 52, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 81, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			102, 108, 111, 97, 116, 51, 46, 103, 101, 110,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			83, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 102,
			108, 111, 97, 116, 51, 120, 50, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 83, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			102, 108, 111, 97, 116, 51, 120, 51, 46, 103,
			101, 110, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 83, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 109, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 64, 49, 46, 50,
			46, 54, 92, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			92, 102, 108, 111, 97, 116, 51, 120, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 81, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 102, 108, 111, 97, 116, 52, 46, 103,
			101, 110, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 83, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 109, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 64, 49, 46, 50,
			46, 54, 92, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			92, 102, 108, 111, 97, 116, 52, 120, 50, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 83, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 102, 108, 111, 97, 116, 52, 120, 51,
			46, 103, 101, 110, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 83, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 109, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 64, 49,
			46, 50, 46, 54, 92, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 92, 102, 108, 111, 97, 116, 52, 120,
			52, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 90, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 71, 101, 111, 109, 101, 116,
			114, 121, 92, 77, 105, 110, 77, 97, 120, 65,
			65, 66, 66, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 85, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 71, 101, 111, 109, 101, 116, 114, 121,
			92, 80, 108, 97, 110, 101, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 75, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 109,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			64, 49, 46, 50, 46, 54, 92, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 92, 104, 97, 108, 102, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 80,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 104, 97,
			108, 102, 50, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 80, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 104, 97, 108, 102,
			51, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 80, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 104, 97, 108, 102, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 114, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 73, 108, 50, 67, 112, 112, 69, 97,
			103, 101, 114, 83, 116, 97, 116, 105, 99, 67,
			108, 97, 115, 115, 67, 111, 110, 115, 116, 114,
			117, 99, 116, 105, 111, 110, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 79, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 105, 110, 116, 50, 46, 103,
			101, 110, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 81, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 109, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 64, 49, 46, 50,
			46, 54, 92, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			92, 105, 110, 116, 50, 120, 50, 46, 103, 101,
			110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 81, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			105, 110, 116, 50, 120, 51, 46, 103, 101, 110,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			81, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 105,
			110, 116, 50, 120, 52, 46, 103, 101, 110, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 79,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 105, 110,
			116, 51, 46, 103, 101, 110, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 81, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 109,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			64, 49, 46, 50, 46, 54, 92, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 92, 105, 110, 116, 51, 120,
			50, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 81, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 105, 110, 116, 51, 120, 51,
			46, 103, 101, 110, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 81, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 109, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 64, 49,
			46, 50, 46, 54, 92, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 92, 105, 110, 116, 51, 120, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 79, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 105, 110, 116, 52, 46, 103, 101, 110,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			81, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 105,
			110, 116, 52, 120, 50, 46, 103, 101, 110, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 81,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 105, 110,
			116, 52, 120, 51, 46, 103, 101, 110, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 81, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 109, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 64, 49, 46, 50, 46, 54, 92, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 92, 105, 110, 116,
			52, 120, 52, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 75, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 109, 97, 116, 104,
			46, 99, 115, 0, 0, 0, 5, 0, 0, 0,
			92, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 109,
			97, 116, 104, 95, 117, 110, 105, 116, 121, 95,
			99, 111, 110, 118, 101, 114, 115, 105, 111, 110,
			46, 99, 115, 0, 0, 0, 4, 0, 0, 0,
			77, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 109,
			97, 116, 114, 105, 120, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 81, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 109, 97, 116, 114, 105, 120,
			46, 103, 101, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 87, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 109, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 64, 49,
			46, 50, 46, 54, 92, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 92, 78, 111, 105, 115, 101, 92, 99,
			101, 108, 108, 117, 108, 97, 114, 50, 68, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 88,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 78, 111,
			105, 115, 101, 92, 99, 101, 108, 108, 117, 108,
			97, 114, 50, 120, 50, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 90, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 78, 111, 105, 115, 101, 92,
			99, 101, 108, 108, 117, 108, 97, 114, 50, 120,
			50, 120, 50, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 87, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 78, 111, 105, 115, 101, 92, 99, 101,
			108, 108, 117, 108, 97, 114, 51, 68, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 91, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 109, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 64, 49, 46, 50, 46, 54, 92, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 92, 78, 111, 105,
			115, 101, 92, 99, 108, 97, 115, 115, 105, 99,
			110, 111, 105, 115, 101, 50, 68, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 91, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 78, 111, 105, 115,
			101, 92, 99, 108, 97, 115, 115, 105, 99, 110,
			111, 105, 115, 101, 51, 68, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 91, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 109,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			64, 49, 46, 50, 46, 54, 92, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 92, 78, 111, 105, 115, 101,
			92, 99, 108, 97, 115, 115, 105, 99, 110, 111,
			105, 115, 101, 52, 68, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 83, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 78, 111, 105, 115, 101, 92,
			99, 111, 109, 109, 111, 110, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 84, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 109,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			64, 49, 46, 50, 46, 54, 92, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 92, 78, 111, 105, 115, 101,
			92, 110, 111, 105, 115, 101, 50, 68, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 84, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 109, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 64, 49, 46, 50, 46, 54, 92, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 92, 78, 111, 105,
			115, 101, 92, 110, 111, 105, 115, 101, 51, 68,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			88, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 78,
			111, 105, 115, 101, 92, 110, 111, 105, 115, 101,
			51, 68, 103, 114, 97, 100, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 84, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 109,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			64, 49, 46, 50, 46, 54, 92, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 92, 78, 111, 105, 115, 101,
			92, 110, 111, 105, 115, 101, 52, 68, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 88, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 109, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 64, 49, 46, 50, 46, 54, 92, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 92, 78, 111, 105,
			115, 101, 92, 112, 115, 114, 100, 110, 111, 105,
			115, 101, 50, 68, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 89, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 109, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 64, 49,
			46, 50, 46, 54, 92, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 92, 80, 114, 111, 112, 101, 114, 116,
			121, 65, 116, 116, 114, 105, 98, 117, 116, 101,
			115, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 81, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 109, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 64, 49, 46, 50, 46,
			54, 92, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 92,
			113, 117, 97, 116, 101, 114, 110, 105, 111, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			77, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 109, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 64, 49, 46, 50, 46, 54,
			92, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 92, 114,
			97, 110, 100, 111, 109, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 86, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 114, 105, 103, 105, 100, 95,
			116, 114, 97, 110, 115, 102, 111, 114, 109, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 80,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 109, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 64, 49, 46, 50, 46, 54, 92,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 92, 117, 105,
			110, 116, 50, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 82, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 117, 105, 110, 116,
			50, 120, 50, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 82, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 117, 105, 110, 116,
			50, 120, 51, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 82, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 117, 105, 110, 116,
			50, 120, 52, 46, 103, 101, 110, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 80, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			109, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 64, 49, 46, 50, 46, 54, 92, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 92, 117, 105, 110, 116,
			51, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 82, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 117, 105, 110, 116, 51, 120,
			50, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 82, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 117, 105, 110, 116, 51, 120,
			51, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 82, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 117, 105, 110, 116, 51, 120,
			52, 46, 103, 101, 110, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 80, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 109, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 64,
			49, 46, 50, 46, 54, 92, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 92, 117, 105, 110, 116, 52, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 117, 105, 110, 116, 52, 120, 50, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 117, 105, 110, 116, 52, 120, 51, 46,
			103, 101, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 82, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 109, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 64, 49, 46,
			50, 46, 54, 92, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 92, 117, 105, 110, 116, 52, 120, 52, 46,
			103, 101, 110, 46, 99, 115
		};
		result.TypesData = new byte[5509]
		{
			0, 0, 0, 0, 23, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 98, 111, 111, 108, 50, 1, 0,
			0, 0, 32, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			46, 124, 68, 101, 98, 117, 103, 103, 101, 114,
			80, 114, 111, 120, 121, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 25, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 98, 111, 111, 108, 50,
			120, 50, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 25, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 98, 111, 111, 108, 50, 120, 51, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 0, 0, 0, 0,
			25, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 98,
			111, 111, 108, 50, 120, 52, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 23, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 98, 111, 111, 108,
			51, 1, 0, 0, 0, 32, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 124, 68, 101, 98, 117, 103,
			103, 101, 114, 80, 114, 111, 120, 121, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 25,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 98, 111,
			111, 108, 51, 120, 50, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 25, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 98, 111, 111, 108, 51,
			120, 51, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 25, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 98, 111, 111, 108, 51, 120, 52, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 0, 0, 0, 0,
			23, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 98,
			111, 111, 108, 52, 1, 0, 0, 0, 32, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 46, 124, 68, 101,
			98, 117, 103, 103, 101, 114, 80, 114, 111, 120,
			121, 1, 0, 0, 0, 22, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 109, 97, 116, 104, 0, 0,
			0, 0, 25, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 98, 111, 111, 108, 52, 120, 50, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 25,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 98, 111,
			111, 108, 52, 120, 51, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 25, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 98, 111, 111, 108, 52,
			120, 52, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 25, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 100, 111, 117, 98, 108, 101, 50, 1,
			0, 0, 0, 32, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 46, 124, 68, 101, 98, 117, 103, 103, 101,
			114, 80, 114, 111, 120, 121, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 27, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 100, 111, 117, 98,
			108, 101, 50, 120, 50, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 27, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 100, 111, 117, 98, 108,
			101, 50, 120, 51, 1, 0, 0, 0, 22, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 109, 97, 116,
			104, 0, 0, 0, 0, 27, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 100, 111, 117, 98, 108, 101,
			50, 120, 52, 1, 0, 0, 0, 22, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 109, 97, 116, 104,
			0, 0, 0, 0, 25, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 100, 111, 117, 98, 108, 101, 51,
			1, 0, 0, 0, 32, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 46, 124, 68, 101, 98, 117, 103, 103,
			101, 114, 80, 114, 111, 120, 121, 1, 0, 0,
			0, 22, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			109, 97, 116, 104, 0, 0, 0, 0, 27, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 100, 111, 117,
			98, 108, 101, 51, 120, 50, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 27, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 100, 111, 117, 98,
			108, 101, 51, 120, 51, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 27, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 100, 111, 117, 98, 108,
			101, 51, 120, 52, 1, 0, 0, 0, 22, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 109, 97, 116,
			104, 0, 0, 0, 0, 25, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 100, 111, 117, 98, 108, 101,
			52, 1, 0, 0, 0, 32, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 124, 68, 101, 98, 117, 103,
			103, 101, 114, 80, 114, 111, 120, 121, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 27,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 100, 111,
			117, 98, 108, 101, 52, 120, 50, 1, 0, 0,
			0, 22, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			109, 97, 116, 104, 0, 0, 0, 0, 27, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 100, 111, 117,
			98, 108, 101, 52, 120, 51, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 27, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 100, 111, 117, 98,
			108, 101, 52, 120, 52, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 1, 0, 0, 0, 24, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 102, 108, 111, 97, 116,
			50, 1, 0, 0, 0, 32, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 124, 68, 101, 98, 117, 103,
			103, 101, 114, 80, 114, 111, 120, 121, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 102, 108,
			111, 97, 116, 50, 120, 50, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 26, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 102, 108, 111, 97,
			116, 50, 120, 51, 1, 0, 0, 0, 22, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 109, 97, 116,
			104, 0, 0, 0, 0, 26, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 102, 108, 111, 97, 116, 50,
			120, 52, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 1,
			0, 0, 0, 24, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 102, 108, 111, 97, 116, 51, 1, 0,
			0, 0, 32, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			46, 124, 68, 101, 98, 117, 103, 103, 101, 114,
			80, 114, 111, 120, 121, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 26, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 102, 108, 111, 97, 116,
			51, 120, 50, 1, 0, 0, 0, 22, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 109, 97, 116, 104,
			1, 0, 0, 0, 26, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 102, 108, 111, 97, 116, 51, 120,
			51, 1, 0, 0, 0, 22, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 109, 97, 116, 104, 0, 0,
			0, 0, 26, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 102, 108, 111, 97, 116, 51, 120, 52, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 1, 0, 0, 0,
			24, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 102,
			108, 111, 97, 116, 52, 1, 0, 0, 0, 32,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 46, 124, 68,
			101, 98, 117, 103, 103, 101, 114, 80, 114, 111,
			120, 121, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 26, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 102, 108, 111, 97, 116, 52, 120, 50,
			1, 0, 0, 0, 22, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 109, 97, 116, 104, 0, 0, 0,
			0, 26, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			102, 108, 111, 97, 116, 52, 120, 51, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 102, 108,
			111, 97, 116, 52, 120, 52, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 37, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 46, 71, 101, 111, 109,
			101, 116, 114, 121, 124, 77, 105, 110, 77, 97,
			120, 65, 65, 66, 66, 0, 0, 0, 0, 31,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 46, 71, 101,
			111, 109, 101, 116, 114, 121, 124, 77, 97, 116,
			104, 0, 0, 0, 0, 32, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 71, 101, 111, 109, 101, 116,
			114, 121, 124, 80, 108, 97, 110, 101, 0, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 104, 97, 108, 102, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 23, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 104, 97, 108, 102, 50,
			1, 0, 0, 0, 32, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 46, 124, 68, 101, 98, 117, 103, 103,
			101, 114, 80, 114, 111, 120, 121, 1, 0, 0,
			0, 22, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			109, 97, 116, 104, 0, 0, 0, 0, 23, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 104, 97, 108,
			102, 51, 1, 0, 0, 0, 32, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 46, 124, 68, 101, 98, 117,
			103, 103, 101, 114, 80, 114, 111, 120, 121, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 0, 0, 0, 0,
			23, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 104,
			97, 108, 102, 52, 1, 0, 0, 0, 32, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 46, 124, 68, 101,
			98, 117, 103, 103, 101, 114, 80, 114, 111, 120,
			121, 1, 0, 0, 0, 22, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 109, 97, 116, 104, 0, 0,
			0, 0, 73, 85, 110, 105, 116, 121, 46, 73,
			76, 50, 67, 80, 80, 46, 67, 111, 109, 112,
			105, 108, 101, 114, 83, 101, 114, 118, 105, 99,
			101, 115, 124, 73, 108, 50, 67, 112, 112, 69,
			97, 103, 101, 114, 83, 116, 97, 116, 105, 99,
			67, 108, 97, 115, 115, 67, 111, 110, 115, 116,
			114, 117, 99, 116, 105, 111, 110, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 0, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 105,
			110, 116, 50, 1, 0, 0, 0, 32, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 46, 124, 68, 101, 98,
			117, 103, 103, 101, 114, 80, 114, 111, 120, 121,
			1, 0, 0, 0, 22, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 109, 97, 116, 104, 0, 0, 0,
			0, 24, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			105, 110, 116, 50, 120, 50, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 24, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 105, 110, 116, 50,
			120, 51, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 24, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 105, 110, 116, 50, 120, 52, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 105, 110,
			116, 51, 1, 0, 0, 0, 32, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 46, 124, 68, 101, 98, 117,
			103, 103, 101, 114, 80, 114, 111, 120, 121, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 0, 0, 0, 0,
			24, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 105,
			110, 116, 51, 120, 50, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 24, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 105, 110, 116, 51, 120,
			51, 1, 0, 0, 0, 22, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 109, 97, 116, 104, 0, 0,
			0, 0, 24, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 105, 110, 116, 51, 120, 52, 1, 0, 0,
			0, 22, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			109, 97, 116, 104, 0, 0, 0, 0, 22, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 105, 110, 116,
			52, 1, 0, 0, 0, 32, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 124, 68, 101, 98, 117, 103,
			103, 101, 114, 80, 114, 111, 120, 121, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 24,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 105, 110,
			116, 52, 120, 50, 1, 0, 0, 0, 22, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 109, 97, 116,
			104, 0, 0, 0, 0, 24, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 105, 110, 116, 52, 120, 51,
			1, 0, 0, 0, 22, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 109, 97, 116, 104, 0, 0, 0,
			0, 24, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			105, 110, 116, 52, 120, 52, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 1, 0, 0, 0, 22, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 109, 97, 116, 104,
			0, 0, 0, 0, 36, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 46, 109, 97, 116, 104, 124, 73, 110,
			116, 70, 108, 111, 97, 116, 85, 110, 105, 111,
			110, 0, 0, 0, 0, 38, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 109, 97, 116, 104, 124, 76,
			111, 110, 103, 68, 111, 117, 98, 108, 101, 85,
			110, 105, 111, 110, 1, 0, 0, 0, 24, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 102, 108, 111,
			97, 116, 50, 1, 0, 0, 0, 24, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 102, 108, 111, 97,
			116, 51, 1, 0, 0, 0, 24, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 102, 108, 111, 97, 116,
			52, 1, 0, 0, 0, 28, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 113, 117, 97, 116, 101, 114,
			110, 105, 111, 110, 1, 0, 0, 0, 26, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 102, 108, 111,
			97, 116, 52, 120, 52, 1, 0, 0, 0, 26,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 102, 108,
			111, 97, 116, 50, 120, 50, 1, 0, 0, 0,
			26, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 102,
			108, 111, 97, 116, 51, 120, 51, 1, 0, 0,
			0, 26, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			102, 108, 111, 97, 116, 52, 120, 52, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 1, 0, 0, 0, 23, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 110, 111, 105, 115, 101,
			1, 0, 0, 0, 23, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 110, 111, 105, 115, 101, 1, 0,
			0, 0, 23, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 110, 111, 105, 115, 101, 1, 0, 0, 0,
			23, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 110,
			111, 105, 115, 101, 1, 0, 0, 0, 23, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 110, 111, 105,
			115, 101, 1, 0, 0, 0, 23, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 110, 111, 105, 115, 101,
			1, 0, 0, 0, 23, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 110, 111, 105, 115, 101, 1, 0,
			0, 0, 23, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 110, 111, 105, 115, 101, 1, 0, 0, 0,
			23, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 110,
			111, 105, 115, 101, 1, 0, 0, 0, 23, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 124, 110, 111, 105,
			115, 101, 1, 0, 0, 0, 23, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 110, 111, 105, 115, 101,
			1, 0, 0, 0, 23, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 110, 111, 105, 115, 101, 1, 0,
			0, 0, 23, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 110, 111, 105, 115, 101, 0, 0, 0, 0,
			40, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 80,
			111, 115, 116, 78, 111, 114, 109, 97, 108, 105,
			122, 101, 65, 116, 116, 114, 105, 98, 117, 116,
			101, 0, 0, 0, 0, 41, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 68, 111, 78, 111, 116, 78,
			111, 114, 109, 97, 108, 105, 122, 101, 65, 116,
			116, 114, 105, 98, 117, 116, 101, 1, 0, 0,
			0, 28, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			113, 117, 97, 116, 101, 114, 110, 105, 111, 110,
			1, 0, 0, 0, 22, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 109, 97, 116, 104, 0, 0, 0,
			0, 24, 85, 110, 105, 116, 121, 46, 77, 97,
			116, 104, 101, 109, 97, 116, 105, 99, 115, 124,
			82, 97, 110, 100, 111, 109, 0, 0, 0, 0,
			32, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 82,
			105, 103, 105, 100, 84, 114, 97, 110, 115, 102,
			111, 114, 109, 1, 0, 0, 0, 22, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 109, 97, 116, 104,
			0, 0, 0, 0, 23, 85, 110, 105, 116, 121,
			46, 77, 97, 116, 104, 101, 109, 97, 116, 105,
			99, 115, 124, 117, 105, 110, 116, 50, 1, 0,
			0, 0, 32, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			46, 124, 68, 101, 98, 117, 103, 103, 101, 114,
			80, 114, 111, 120, 121, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 25, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 117, 105, 110, 116, 50,
			120, 50, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 25, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 117, 105, 110, 116, 50, 120, 51, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 0, 0, 0, 0,
			25, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 117,
			105, 110, 116, 50, 120, 52, 1, 0, 0, 0,
			22, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 109,
			97, 116, 104, 0, 0, 0, 0, 23, 85, 110,
			105, 116, 121, 46, 77, 97, 116, 104, 101, 109,
			97, 116, 105, 99, 115, 124, 117, 105, 110, 116,
			51, 1, 0, 0, 0, 32, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 46, 124, 68, 101, 98, 117, 103,
			103, 101, 114, 80, 114, 111, 120, 121, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 25,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 117, 105,
			110, 116, 51, 120, 50, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 25, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 117, 105, 110, 116, 51,
			120, 51, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104, 0,
			0, 0, 0, 25, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 117, 105, 110, 116, 51, 120, 52, 1,
			0, 0, 0, 22, 85, 110, 105, 116, 121, 46,
			77, 97, 116, 104, 101, 109, 97, 116, 105, 99,
			115, 124, 109, 97, 116, 104, 0, 0, 0, 0,
			23, 85, 110, 105, 116, 121, 46, 77, 97, 116,
			104, 101, 109, 97, 116, 105, 99, 115, 124, 117,
			105, 110, 116, 52, 1, 0, 0, 0, 32, 85,
			110, 105, 116, 121, 46, 77, 97, 116, 104, 101,
			109, 97, 116, 105, 99, 115, 46, 124, 68, 101,
			98, 117, 103, 103, 101, 114, 80, 114, 111, 120,
			121, 1, 0, 0, 0, 22, 85, 110, 105, 116,
			121, 46, 77, 97, 116, 104, 101, 109, 97, 116,
			105, 99, 115, 124, 109, 97, 116, 104, 0, 0,
			0, 0, 25, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 117, 105, 110, 116, 52, 120, 50, 1, 0,
			0, 0, 22, 85, 110, 105, 116, 121, 46, 77,
			97, 116, 104, 101, 109, 97, 116, 105, 99, 115,
			124, 109, 97, 116, 104, 0, 0, 0, 0, 25,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 117, 105,
			110, 116, 52, 120, 51, 1, 0, 0, 0, 22,
			85, 110, 105, 116, 121, 46, 77, 97, 116, 104,
			101, 109, 97, 116, 105, 99, 115, 124, 109, 97,
			116, 104, 0, 0, 0, 0, 25, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 117, 105, 110, 116, 52,
			120, 52, 1, 0, 0, 0, 22, 85, 110, 105,
			116, 121, 46, 77, 97, 116, 104, 101, 109, 97,
			116, 105, 99, 115, 124, 109, 97, 116, 104
		};
		result.TotalFiles = 88;
		result.TotalTypes = 183;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace Unity.IL2CPP.CompilerServices
{
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)]
	internal class Il2CppEagerStaticClassConstructionAttribute : Attribute
	{
	}
}
namespace Unity.Mathematics
{
	[Serializable]
	[DebuggerTypeProxy(typeof(DebuggerProxy))]
	[Il2CppEagerStaticClassConstruction]
	public struct bool2 : IEquatable<bool2>
	{
		internal sealed class DebuggerProxy
		{
			public bool x;

			public bool y;

			public DebuggerProxy(bool2 v)
			{
				x = v.x;
				y = v.y;
			}
		}

		[MarshalAs(UnmanagedType.U1)]
		public bool x;

		[MarshalAs(UnmanagedType.U1)]
		public bool y;

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xxxx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, x, x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xxxy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, x, x, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xxyx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, x, y, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xxyy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, x, y, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xyxx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, y, x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xyxy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, y, x, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xyyx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, y, y, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 xyyy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(x, y, y, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yxxx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, x, x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yxxy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, x, x, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yxyx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, x, y, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yxyy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, x, y, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yyxx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, y, x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yyxy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, y, x, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yyyx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, y, y, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool4 yyyy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool4(y, y, y, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 xxx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(x, x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 xxy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(x, x, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 xyx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(x, y, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 xyy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(x, y, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 yxx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(y, x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 yxy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(y, x, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 yyx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(y, y, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool3 yyy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool3(y, y, y);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool2 xx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool2(x, x);
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool2 xy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool2(x, y);
			}
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			set
			{
				x = value.x;
				y = value.y;
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool2 yx
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool2(y, x);
			}
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			set
			{
				y = value.x;
				x = value.y;
			}
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public bool2 yy
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return new bool2(y, y);
			}
		}

		public unsafe bool this[int index]
		{
			get
			{
				fixed (bool2* ptr = &this)
				{
					return ((byte*)ptr)[index] != 0;
				}
			}
			set
			{
				fixed (bool* ptr = &x)
				{
					ptr[index] = value;
				}
			}
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public bool2(bool x, bool y)
		{
			this.x = x;
			this.y = y;
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public bool2(bool2 xy)
		{
			x = xy.x;
			y = xy.y;
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public bool2(bool v)
		{
			x = v;
			y = v;
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static implicit operator bool2(bool v)
		{
			return new bool2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator ==(bool2 lhs, bool2 rhs)
		{
			return new bool2(lhs.x == rhs.x, lhs.y == rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator ==(bool2 lhs, bool rhs)
		{
			return new bool2(lhs.x == rhs, lhs.y == rhs);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator ==(bool lhs, bool2 rhs)
		{
			return new bool2(lhs == rhs.x, lhs == rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator !=(bool2 lhs, bool2 rhs)
		{
			return new bool2(lhs.x != rhs.x, lhs.y != rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator !=(bool2 lhs, bool rhs)
		{
			return new bool2(lhs.x != rhs, lhs.y != rhs);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator !=(bool lhs, bool2 rhs)
		{
			return new bool2(lhs != rhs.x, lhs != rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator !(bool2 val)
		{
			return new bool2(!val.x, !val.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator &(bool2 lhs, bool2 rhs)
		{
			return new bool2(lhs.x & rhs.x, lhs.y & rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator &(bool2 lhs, bool rhs)
		{
			return new bool2(lhs.x && rhs, lhs.y && rhs);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator &(bool lhs, bool2 rhs)
		{
			return new bool2(lhs & rhs.x, lhs & rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator |(bool2 lhs, bool2 rhs)
		{
			return new bool2(lhs.x | rhs.x, lhs.y | rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator |(bool2 lhs, bool rhs)
		{
			return new bool2(lhs.x || rhs, lhs.y || rhs);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator |(bool lhs, bool2 rhs)
		{
			return new bool2(lhs | rhs.x, lhs | rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator ^(bool2 lhs, bool2 rhs)
		{
			return new bool2(lhs.x ^ rhs.x, lhs.y ^ rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator ^(bool2 lhs, bool rhs)
		{
			return new bool2(lhs.x ^ rhs, lhs.y ^ rhs);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 operator ^(bool lhs, bool2 rhs)
		{
			return new bool2(lhs ^ rhs.x, lhs ^ rhs.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public bool Equals(bool2 rhs)
		{
			if (x == rhs.x)
			{
				return y == rhs.y;
			}
			return false;
		}

		public override bool Equals(object o)
		{
			if (o is bool2 rhs)
			{
				return Equals(rhs);
			}
			return false;
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public override int GetHashCode()
		{
			return (int)math.hash(this);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public override string ToString()
		{
			return $"bool2({x}, {y})";
		}
	}
	[Il2CppEagerStaticClassConstruction]
	public static class math
	{
		public enum RotationOrder : byte
		{
			XYZ = 0,
			XZY = 1,
			YXZ = 2,
			YZX = 3,
			ZXY = 4,
			ZYX = 5,
			Default = 4
		}

		public enum ShuffleComponent : byte
		{
			LeftX,
			LeftY,
			LeftZ,
			LeftW,
			RightX,
			RightY,
			RightZ,
			RightW
		}

		[StructLayout(LayoutKind.Explicit)]
		internal struct IntFloatUnion
		{
			[FieldOffset(0)]
			public int intValue;

			[FieldOffset(0)]
			public float floatValue;
		}

		[StructLayout(LayoutKind.Explicit)]
		internal struct LongDoubleUnion
		{
			[FieldOffset(0)]
			public long longValue;

			[FieldOffset(0)]
			public double doubleValue;
		}

		public const double E_DBL = Math.E;

		public const double LOG2E_DBL = 1.4426950408889634;

		public const double LOG10E_DBL = 0.4342944819032518;

		public const double LN2_DBL = 0.6931471805599453;

		public const double LN10_DBL = 2.302585092994046;

		public const double PI_DBL = Math.PI;

		public const double SQRT2_DBL = 1.4142135623730951;

		public const double EPSILON_DBL = 2.220446049250313E-16;

		public const double INFINITY_DBL = double.PositiveInfinity;

		public const double NAN_DBL = double.NaN;

		public const float FLT_MIN_NORMAL = 1.1754944E-38f;

		public const double DBL_MIN_NORMAL = 2.2250738585072014E-308;

		public const float E = MathF.E;

		public const float LOG2E = 1.442695f;

		public const float LOG10E = 0.4342945f;

		public const float LN2 = 0.6931472f;

		public const float LN10 = 2.3025851f;

		public const float PI = MathF.PI;

		public const float SQRT2 = 1.4142135f;

		public const float EPSILON = 1.1920929E-07f;

		public const float INFINITY = float.PositiveInfinity;

		public const float NAN = float.NaN;

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 bool2(bool x, bool y)
		{
			return new bool2(x, y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 bool2(bool2 xy)
		{
			return new bool2(xy);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 bool2(bool v)
		{
			return new bool2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool2 v)
		{
			return csum(select(uint2(2426570171u, 1561977301u), uint2(4205774813u, 1650214333u), v));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint2 hashwide(bool2 v)
		{
			return select(uint2(3388112843u, 1831150513u), uint2(1848374953u, 3430200247u), v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool shuffle(bool2 left, bool2 right, ShuffleComponent x)
		{
			return select_shuffle_component(left, right, x);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 shuffle(bool2 left, bool2 right, ShuffleComponent x, ShuffleComponent y)
		{
			return bool2(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 shuffle(bool2 left, bool2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z)
		{
			return bool3(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y), select_shuffle_component(left, right, z));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 shuffle(bool2 left, bool2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w)
		{
			return bool4(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y), select_shuffle_component(left, right, z), select_shuffle_component(left, right, w));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		internal static bool select_shuffle_component(bool2 a, bool2 b, ShuffleComponent component)
		{
			return component switch
			{
				ShuffleComponent.LeftX => a.x, 
				ShuffleComponent.LeftY => a.y, 
				ShuffleComponent.RightX => b.x, 
				ShuffleComponent.RightY => b.y, 
				_ => throw new ArgumentException("Invalid shuffle component: " + component), 
			};
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x2 bool2x2(bool2 c0, bool2 c1)
		{
			return new bool2x2(c0, c1);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x2 bool2x2(bool m00, bool m01, bool m10, bool m11)
		{
			return new bool2x2(m00, m01, m10, m11);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x2 bool2x2(bool v)
		{
			return new bool2x2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x2 transpose(bool2x2 v)
		{
			return bool2x2(v.c0.x, v.c0.y, v.c1.x, v.c1.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool2x2 v)
		{
			return csum(select(uint2(2062756937u, 2920485769u), uint2(1562056283u, 2265541847u), v.c0) + select(uint2(1283419601u, 1210229737u), uint2(2864955997u, 3525118277u), v.c1));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint2 hashwide(bool2x2 v)
		{
			return select(uint2(2298260269u, 1632478733u), uint2(1537393931u, 2353355467u), v.c0) + select(uint2(3441847433u, 4052036147u), uint2(2011389559u, 2252224297u), v.c1);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x3 bool2x3(bool2 c0, bool2 c1, bool2 c2)
		{
			return new bool2x3(c0, c1, c2);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x3 bool2x3(bool m00, bool m01, bool m02, bool m10, bool m11, bool m12)
		{
			return new bool2x3(m00, m01, m02, m10, m11, m12);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x3 bool2x3(bool v)
		{
			return new bool2x3(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x2 transpose(bool2x3 v)
		{
			return bool3x2(v.c0.x, v.c0.y, v.c1.x, v.c1.y, v.c2.x, v.c2.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool2x3 v)
		{
			return csum(select(uint2(2078515003u, 4206465343u), uint2(3025146473u, 3763046909u), v.c0) + select(uint2(3678265601u, 2070747979u), uint2(1480171127u, 1588341193u), v.c1) + select(uint2(4234155257u, 1811310911u), uint2(2635799963u, 4165137857u), v.c2));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint2 hashwide(bool2x3 v)
		{
			return select(uint2(2759770933u, 2759319383u), uint2(3299952959u, 3121178323u), v.c0) + select(uint2(2948522579u, 1531026433u), uint2(1365086453u, 3969870067u), v.c1) + select(uint2(4192899797u, 3271228601u), uint2(1634639009u, 3318036811u), v.c2);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x4 bool2x4(bool2 c0, bool2 c1, bool2 c2, bool2 c3)
		{
			return new bool2x4(c0, c1, c2, c3);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x4 bool2x4(bool m00, bool m01, bool m02, bool m03, bool m10, bool m11, bool m12, bool m13)
		{
			return new bool2x4(m00, m01, m02, m03, m10, m11, m12, m13);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x4 bool2x4(bool v)
		{
			return new bool2x4(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x2 transpose(bool2x4 v)
		{
			return bool4x2(v.c0.x, v.c0.y, v.c1.x, v.c1.y, v.c2.x, v.c2.y, v.c3.x, v.c3.y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool2x4 v)
		{
			return csum(select(uint2(1168253063u, 4228926523u), uint2(1610574617u, 1584185147u), v.c0) + select(uint2(3041325733u, 3150930919u), uint2(3309258581u, 1770373673u), v.c1) + select(uint2(3778261171u, 3286279097u), uint2(4264629071u, 1898591447u), v.c2) + select(uint2(2641864091u, 1229113913u), uint2(3020867117u, 1449055807u), v.c3));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint2 hashwide(bool2x4 v)
		{
			return select(uint2(2479033387u, 3702457169u), uint2(1845824257u, 1963973621u), v.c0) + select(uint2(2134758553u, 1391111867u), uint2(1167706003u, 2209736489u), v.c1) + select(uint2(3261535807u, 1740411209u), uint2(2910609089u, 2183822701u), v.c2) + select(uint2(3029516053u, 3547472099u), uint2(2057487037u, 3781937309u), v.c3);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 bool3(bool x, bool y, bool z)
		{
			return new bool3(x, y, z);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 bool3(bool x, bool2 yz)
		{
			return new bool3(x, yz);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 bool3(bool2 xy, bool z)
		{
			return new bool3(xy, z);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 bool3(bool3 xyz)
		{
			return new bool3(xyz);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 bool3(bool v)
		{
			return new bool3(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool3 v)
		{
			return csum(select(uint3(2716413241u, 1166264321u, 2503385333u), uint3(2944493077u, 2599999021u, 3814721321u), v));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint3 hashwide(bool3 v)
		{
			return select(uint3(1595355149u, 1728931849u, 2062756937u), uint3(2920485769u, 1562056283u, 2265541847u), v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool shuffle(bool3 left, bool3 right, ShuffleComponent x)
		{
			return select_shuffle_component(left, right, x);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 shuffle(bool3 left, bool3 right, ShuffleComponent x, ShuffleComponent y)
		{
			return bool2(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 shuffle(bool3 left, bool3 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z)
		{
			return bool3(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y), select_shuffle_component(left, right, z));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 shuffle(bool3 left, bool3 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w)
		{
			return bool4(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y), select_shuffle_component(left, right, z), select_shuffle_component(left, right, w));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		internal static bool select_shuffle_component(bool3 a, bool3 b, ShuffleComponent component)
		{
			return component switch
			{
				ShuffleComponent.LeftX => a.x, 
				ShuffleComponent.LeftY => a.y, 
				ShuffleComponent.LeftZ => a.z, 
				ShuffleComponent.RightX => b.x, 
				ShuffleComponent.RightY => b.y, 
				ShuffleComponent.RightZ => b.z, 
				_ => throw new ArgumentException("Invalid shuffle component: " + component), 
			};
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x2 bool3x2(bool3 c0, bool3 c1)
		{
			return new bool3x2(c0, c1);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x2 bool3x2(bool m00, bool m01, bool m10, bool m11, bool m20, bool m21)
		{
			return new bool3x2(m00, m01, m10, m11, m20, m21);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x2 bool3x2(bool v)
		{
			return new bool3x2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x3 transpose(bool3x2 v)
		{
			return bool2x3(v.c0.x, v.c0.y, v.c0.z, v.c1.x, v.c1.y, v.c1.z);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool3x2 v)
		{
			return csum(select(uint3(2627668003u, 1520214331u, 2949502447u), uint3(2827819133u, 3480140317u, 2642994593u), v.c0) + select(uint3(3940484981u, 1954192763u, 1091696537u), uint3(3052428017u, 4253034763u, 2338696631u), v.c1));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint3 hashwide(bool3x2 v)
		{
			return select(uint3(3757372771u, 1885959949u, 3508684087u), uint3(3919501043u, 1209161033u, 4007793211u), v.c0) + select(uint3(3819806693u, 3458005183u, 2078515003u), uint3(4206465343u, 3025146473u, 3763046909u), v.c1);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x3 bool3x3(bool3 c0, bool3 c1, bool3 c2)
		{
			return new bool3x3(c0, c1, c2);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x3 bool3x3(bool m00, bool m01, bool m02, bool m10, bool m11, bool m12, bool m20, bool m21, bool m22)
		{
			return new bool3x3(m00, m01, m02, m10, m11, m12, m20, m21, m22);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x3 bool3x3(bool v)
		{
			return new bool3x3(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x3 transpose(bool3x3 v)
		{
			return bool3x3(v.c0.x, v.c0.y, v.c0.z, v.c1.x, v.c1.y, v.c1.z, v.c2.x, v.c2.y, v.c2.z);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool3x3 v)
		{
			return csum(select(uint3(3881277847u, 4017968839u, 1727237899u), uint3(1648514723u, 1385344481u, 3538260197u), v.c0) + select(uint3(4066109527u, 2613148903u, 3367528529u), uint3(1678332449u, 2918459647u, 2744611081u), v.c1) + select(uint3(1952372791u, 2631698677u, 4200781601u), uint3(2119021007u, 1760485621u, 3157985881u), v.c2));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint3 hashwide(bool3x3 v)
		{
			return select(uint3(2171534173u, 2723054263u, 1168253063u), uint3(4228926523u, 1610574617u, 1584185147u), v.c0) + select(uint3(3041325733u, 3150930919u, 3309258581u), uint3(1770373673u, 3778261171u, 3286279097u), v.c1) + select(uint3(4264629071u, 1898591447u, 2641864091u), uint3(1229113913u, 3020867117u, 1449055807u), v.c2);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x4 bool3x4(bool3 c0, bool3 c1, bool3 c2, bool3 c3)
		{
			return new bool3x4(c0, c1, c2, c3);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x4 bool3x4(bool m00, bool m01, bool m02, bool m03, bool m10, bool m11, bool m12, bool m13, bool m20, bool m21, bool m22, bool m23)
		{
			return new bool3x4(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x4 bool3x4(bool v)
		{
			return new bool3x4(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x3 transpose(bool3x4 v)
		{
			return bool4x3(v.c0.x, v.c0.y, v.c0.z, v.c1.x, v.c1.y, v.c1.z, v.c2.x, v.c2.y, v.c2.z, v.c3.x, v.c3.y, v.c3.z);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool3x4 v)
		{
			return csum(select(uint3(2209710647u, 2201894441u, 2849577407u), uint3(3287031191u, 3098675399u, 1564399943u), v.c0) + select(uint3(1148435377u, 3416333663u, 1750611407u), uint3(3285396193u, 3110507567u, 4271396531u), v.c1) + select(uint3(4198118021u, 2908068253u, 3705492289u), uint3(2497566569u, 2716413241u, 1166264321u), v.c2) + select(uint3(2503385333u, 2944493077u, 2599999021u), uint3(3814721321u, 1595355149u, 1728931849u), v.c3));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint3 hashwide(bool3x4 v)
		{
			return select(uint3(2062756937u, 2920485769u, 1562056283u), uint3(2265541847u, 1283419601u, 1210229737u), v.c0) + select(uint3(2864955997u, 3525118277u, 2298260269u), uint3(1632478733u, 1537393931u, 2353355467u), v.c1) + select(uint3(3441847433u, 4052036147u, 2011389559u), uint3(2252224297u, 3784421429u, 1750626223u), v.c2) + select(uint3(3571447507u, 3412283213u, 2601761069u), uint3(1254033427u, 2248573027u, 3612677113u), v.c3);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool x, bool y, bool z, bool w)
		{
			return new bool4(x, y, z, w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool x, bool y, bool2 zw)
		{
			return new bool4(x, y, zw);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool x, bool2 yz, bool w)
		{
			return new bool4(x, yz, w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool x, bool3 yzw)
		{
			return new bool4(x, yzw);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool2 xy, bool z, bool w)
		{
			return new bool4(xy, z, w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool2 xy, bool2 zw)
		{
			return new bool4(xy, zw);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool3 xyz, bool w)
		{
			return new bool4(xyz, w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool4 xyzw)
		{
			return new bool4(xyzw);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 bool4(bool v)
		{
			return new bool4(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool4 v)
		{
			return csum(select(uint4(1610574617u, 1584185147u, 3041325733u, 3150930919u), uint4(3309258581u, 1770373673u, 3778261171u, 3286279097u), v));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint4 hashwide(bool4 v)
		{
			return select(uint4(4264629071u, 1898591447u, 2641864091u, 1229113913u), uint4(3020867117u, 1449055807u, 2479033387u, 3702457169u), v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool shuffle(bool4 left, bool4 right, ShuffleComponent x)
		{
			return select_shuffle_component(left, right, x);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2 shuffle(bool4 left, bool4 right, ShuffleComponent x, ShuffleComponent y)
		{
			return bool2(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3 shuffle(bool4 left, bool4 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z)
		{
			return bool3(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y), select_shuffle_component(left, right, z));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4 shuffle(bool4 left, bool4 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w)
		{
			return bool4(select_shuffle_component(left, right, x), select_shuffle_component(left, right, y), select_shuffle_component(left, right, z), select_shuffle_component(left, right, w));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		internal static bool select_shuffle_component(bool4 a, bool4 b, ShuffleComponent component)
		{
			return component switch
			{
				ShuffleComponent.LeftX => a.x, 
				ShuffleComponent.LeftY => a.y, 
				ShuffleComponent.LeftZ => a.z, 
				ShuffleComponent.LeftW => a.w, 
				ShuffleComponent.RightX => b.x, 
				ShuffleComponent.RightY => b.y, 
				ShuffleComponent.RightZ => b.z, 
				ShuffleComponent.RightW => b.w, 
				_ => throw new ArgumentException("Invalid shuffle component: " + component), 
			};
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x2 bool4x2(bool4 c0, bool4 c1)
		{
			return new bool4x2(c0, c1);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x2 bool4x2(bool m00, bool m01, bool m10, bool m11, bool m20, bool m21, bool m30, bool m31)
		{
			return new bool4x2(m00, m01, m10, m11, m20, m21, m30, m31);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x2 bool4x2(bool v)
		{
			return new bool4x2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool2x4 transpose(bool4x2 v)
		{
			return bool2x4(v.c0.x, v.c0.y, v.c0.z, v.c0.w, v.c1.x, v.c1.y, v.c1.z, v.c1.w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool4x2 v)
		{
			return csum(select(uint4(3516359879u, 3050356579u, 4178586719u, 2558655391u), uint4(1453413133u, 2152428077u, 1938706661u, 1338588197u), v.c0) + select(uint4(3439609253u, 3535343003u, 3546061613u, 2702024231u), uint4(1452124841u, 1966089551u, 2668168249u, 1587512777u), v.c1));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint4 hashwide(bool4x2 v)
		{
			return select(uint4(2353831999u, 3101256173u, 2891822459u, 2837054189u), uint4(3016004371u, 4097481403u, 2229788699u, 2382715877u), v.c0) + select(uint4(1851936439u, 1938025801u, 3712598587u, 3956330501u), uint4(2437373431u, 1441286183u, 2426570171u, 1561977301u), v.c1);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x3 bool4x3(bool4 c0, bool4 c1, bool4 c2)
		{
			return new bool4x3(c0, c1, c2);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x3 bool4x3(bool m00, bool m01, bool m02, bool m10, bool m11, bool m12, bool m20, bool m21, bool m22, bool m30, bool m31, bool m32)
		{
			return new bool4x3(m00, m01, m02, m10, m11, m12, m20, m21, m22, m30, m31, m32);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x3 bool4x3(bool v)
		{
			return new bool4x3(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool3x4 transpose(bool4x3 v)
		{
			return bool3x4(v.c0.x, v.c0.y, v.c0.z, v.c0.w, v.c1.x, v.c1.y, v.c1.z, v.c1.w, v.c2.x, v.c2.y, v.c2.z, v.c2.w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool4x3 v)
		{
			return csum(select(uint4(3940484981u, 1954192763u, 1091696537u, 3052428017u), uint4(4253034763u, 2338696631u, 3757372771u, 1885959949u), v.c0) + select(uint4(3508684087u, 3919501043u, 1209161033u, 4007793211u), uint4(3819806693u, 3458005183u, 2078515003u, 4206465343u), v.c1) + select(uint4(3025146473u, 3763046909u, 3678265601u, 2070747979u), uint4(1480171127u, 1588341193u, 4234155257u, 1811310911u), v.c2));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint4 hashwide(bool4x3 v)
		{
			return select(uint4(2635799963u, 4165137857u, 2759770933u, 2759319383u), uint4(3299952959u, 3121178323u, 2948522579u, 1531026433u), v.c0) + select(uint4(1365086453u, 3969870067u, 4192899797u, 3271228601u), uint4(1634639009u, 3318036811u, 3404170631u, 2048213449u), v.c1) + select(uint4(4164671783u, 1780759499u, 1352369353u, 2446407751u), uint4(1391928079u, 3475533443u, 3777095341u, 3385463369u), v.c2);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x4 bool4x4(bool4 c0, bool4 c1, bool4 c2, bool4 c3)
		{
			return new bool4x4(c0, c1, c2, c3);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x4 bool4x4(bool m00, bool m01, bool m02, bool m03, bool m10, bool m11, bool m12, bool m13, bool m20, bool m21, bool m22, bool m23, bool m30, bool m31, bool m32, bool m33)
		{
			return new bool4x4(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x4 bool4x4(bool v)
		{
			return new bool4x4(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static bool4x4 transpose(bool4x4 v)
		{
			return bool4x4(v.c0.x, v.c0.y, v.c0.z, v.c0.w, v.c1.x, v.c1.y, v.c1.z, v.c1.w, v.c2.x, v.c2.y, v.c2.z, v.c2.w, v.c3.x, v.c3.y, v.c3.z, v.c3.w);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(bool4x4 v)
		{
			return csum(select(uint4(3516359879u, 3050356579u, 4178586719u, 2558655391u), uint4(1453413133u, 2152428077u, 1938706661u, 1338588197u), v.c0) + select(uint4(3439609253u, 3535343003u, 3546061613u, 2702024231u), uint4(1452124841u, 1966089551u, 2668168249u, 1587512777u), v.c1) + select(uint4(2353831999u, 3101256173u, 2891822459u, 2837054189u), uint4(3016004371u, 4097481403u, 2229788699u, 2382715877u), v.c2) + select(uint4(1851936439u, 1938025801u, 3712598587u, 3956330501u), uint4(2437373431u, 1441286183u, 2426570171u, 1561977301u), v.c3));
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint4 hashwide(bool4x4 v)
		{
			return select(uint4(4205774813u, 1650214333u, 3388112843u, 1831150513u), uint4(1848374953u, 3430200247u, 2209710647u, 2201894441u), v.c0) + select(uint4(2849577407u, 3287031191u, 3098675399u, 1564399943u), uint4(1148435377u, 3416333663u, 1750611407u, 3285396193u), v.c1) + select(uint4(3110507567u, 4271396531u, 4198118021u, 2908068253u), uint4(3705492289u, 2497566569u, 2716413241u, 1166264321u), v.c2) + select(uint4(2503385333u, 2944493077u, 2599999021u, 3814721321u), uint4(1595355149u, 1728931849u, 2062756937u, 2920485769u), v.c3);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(double x, double y)
		{
			return new double2(x, y);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(double2 xy)
		{
			return new double2(xy);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(double v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(bool v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(bool2 v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(int v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(int2 v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(uint v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(uint2 v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(half v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(half2 v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(float v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static double2 double2(float2 v)
		{
			return new double2(v);
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint hash(double2 v)
		{
			return csum(fold_to_uint(v) * uint2(2503385333u, 2944493077u)) + 2599999021u;
		}

		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public static uint2 hashwide(double2 v)
		{
			return fold_to_uint(v) * uint2(3814721321u, 1595355149u) + 1728931849u;
		}

		[MethodImpl(MethodImplOptio

valheim_Data/Managed/VRM.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using MToon;
using UniGLTF;
using UniGLTF.MeshUtility;
using UniGLTF.ShaderPropExporter;
using UniGLTF.Utils;
using UniHumanoid;
using UniJSON;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
using VRM;
using VRM.FastSpringBones.Blittables;
using VRM.FastSpringBones.Components;
using VRM.FastSpringBones.Registries;
using VRMShaders;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[4119]
		{
			0, 0, 0, 1, 0, 0, 0, 50, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 66, 108,
			101, 110, 100, 83, 104, 97, 112, 101, 92, 66,
			108, 101, 110, 100, 83, 104, 97, 112, 101, 65,
			118, 97, 116, 97, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 57, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 66, 108, 101, 110,
			100, 83, 104, 97, 112, 101, 92, 66, 108, 101,
			110, 100, 83, 104, 97, 112, 101, 66, 105, 110,
			100, 105, 110, 103, 77, 101, 114, 103, 101, 114,
			46, 99, 115, 0, 0, 0, 3, 0, 0, 0,
			48, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 66, 108, 101, 110, 100, 83, 104, 97, 112,
			101, 92, 66, 108, 101, 110, 100, 83, 104, 97,
			112, 101, 67, 108, 105, 112, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 55, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 66, 108, 101,
			110, 100, 83, 104, 97, 112, 101, 92, 66, 108,
			101, 110, 100, 83, 104, 97, 112, 101, 67, 108,
			105, 112, 72, 97, 110, 100, 108, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 47,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			66, 108, 101, 110, 100, 83, 104, 97, 112, 101,
			92, 66, 108, 101, 110, 100, 83, 104, 97, 112,
			101, 75, 101, 121, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 50, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 66, 108, 101, 110, 100,
			83, 104, 97, 112, 101, 92, 66, 108, 101, 110,
			100, 83, 104, 97, 112, 101, 77, 101, 114, 103,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 41, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 66, 108, 101, 110, 100, 83, 104,
			97, 112, 101, 92, 66, 108, 105, 110, 107, 101,
			114, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 60, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 66, 108, 101, 110, 100, 83, 104, 97,
			112, 101, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 86, 97, 108, 117, 101, 66, 105, 110, 100,
			105, 110, 103, 77, 101, 114, 103, 101, 114, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 49,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			66, 108, 101, 110, 100, 83, 104, 97, 112, 101,
			92, 77, 101, 115, 104, 80, 114, 101, 118, 105,
			101, 119, 73, 116, 101, 109, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 53, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 66, 108, 101,
			110, 100, 83, 104, 97, 112, 101, 92, 80, 114,
			101, 118, 105, 101, 119, 83, 99, 101, 110, 101,
			77, 97, 110, 97, 103, 101, 114, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 52, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 66, 108,
			101, 110, 100, 83, 104, 97, 112, 101, 92, 86,
			82, 77, 66, 108, 101, 110, 100, 83, 104, 97,
			112, 101, 80, 114, 111, 120, 121, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 31, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 69, 110,
			117, 109, 85, 116, 105, 108, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 48, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 92, 69, 110,
			117, 109, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 52, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 92, 103, 108, 84, 70, 95, 86,
			82, 77, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 55, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 92, 86, 114, 109, 72, 117, 109,
			97, 110, 111, 105, 100, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 49, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 105, 114, 115,
			116, 80, 101, 114, 115, 111, 110, 92, 86, 82,
			77, 70, 105, 114, 115, 116, 80, 101, 114, 115,
			111, 110, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 62, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 105, 114, 115, 116, 80, 101,
			114, 115, 111, 110, 92, 86, 82, 77, 70, 105,
			114, 115, 116, 80, 101, 114, 115, 111, 110, 67,
			97, 109, 101, 114, 97, 77, 97, 110, 97, 103,
			101, 114, 46, 99, 115, 0, 0, 0, 4, 0,
			0, 0, 49, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 111, 114, 109, 97, 116, 92,
			103, 108, 84, 70, 95, 86, 82, 77, 95, 66,
			108, 101, 110, 100, 83, 104, 97, 112, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 49,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			70, 111, 114, 109, 97, 116, 92, 103, 108, 84,
			70, 95, 86, 82, 77, 95, 101, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
			0, 0, 3, 0, 0, 0, 50, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 111, 114,
			109, 97, 116, 92, 103, 108, 84, 70, 95, 86,
			82, 77, 95, 70, 105, 114, 115, 116, 80, 101,
			114, 115, 111, 110, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 47, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 111, 114, 109, 97,
			116, 92, 103, 108, 84, 70, 95, 86, 82, 77,
			95, 72, 117, 109, 97, 110, 111, 105, 100, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 47,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			70, 111, 114, 109, 97, 116, 92, 103, 108, 84,
			70, 95, 86, 82, 77, 95, 77, 97, 116, 101,
			114, 105, 97, 108, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 43, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 111, 114, 109, 97,
			116, 92, 103, 108, 84, 70, 95, 86, 82, 77,
			95, 77, 101, 116, 97, 46, 99, 115, 0, 0,
			0, 4, 0, 0, 0, 57, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 111, 114, 109,
			97, 116, 92, 103, 108, 84, 70, 95, 86, 82,
			77, 95, 83, 101, 99, 111, 110, 100, 97, 114,
			121, 65, 110, 105, 109, 97, 116, 105, 111, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			47, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 111, 114, 109, 97, 116, 92, 86, 82,
			77, 68, 101, 115, 101, 114, 105, 97, 108, 105,
			122, 101, 114, 46, 103, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 42, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 111, 114, 109,
			97, 116, 92, 86, 82, 77, 69, 120, 99, 101,
			112, 116, 105, 111, 110, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 45, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 111, 114, 109,
			97, 116, 92, 86, 82, 77, 83, 101, 114, 105,
			97, 108, 105, 122, 101, 114, 46, 103, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 44, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			111, 114, 109, 97, 116, 92, 86, 82, 77, 83,
			112, 101, 99, 86, 101, 114, 115, 105, 111, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			54, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 72, 117, 109, 97, 110, 111, 105, 100, 92,
			86, 82, 77, 72, 117, 109, 97, 110, 111, 105,
			100, 68, 101, 115, 99, 114, 105, 112, 116, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 97, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 79, 92, 77, 97, 116, 101,
			114, 105, 97, 108, 73, 79, 92, 66, 117, 105,
			108, 116, 73, 110, 82, 80, 92, 69, 120, 112,
			111, 114, 116, 92, 66, 117, 105, 108, 116, 73,
			110, 86, 114, 109, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 77, 97, 116, 101, 114, 105, 97,
			108, 80, 114, 111, 112, 101, 114, 116, 121, 69,
			120, 112, 111, 114, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 80, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 73,
			79, 92, 66, 117, 105, 108, 116, 73, 110, 82,
			80, 92, 69, 120, 112, 111, 114, 116, 92, 66,
			117, 105, 108, 116, 73, 110, 86, 114, 109, 77,
			97, 116, 101, 114, 105, 97, 108, 69, 120, 112,
			111, 114, 116, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 95, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 79, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 73, 79, 92,
			66, 117, 105, 108, 116, 73, 110, 82, 80, 92,
			69, 120, 112, 111, 114, 116, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 115, 92, 66, 117, 105,
			108, 116, 73, 110, 86, 114, 109, 77, 84, 111,
			111, 110, 77, 97, 116, 101, 114, 105, 97, 108,
			69, 120, 112, 111, 114, 116, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 91, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			79, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 79, 92, 66, 117, 105, 108, 116, 73, 110,
			82, 80, 92, 73, 109, 112, 111, 114, 116, 92,
			66, 117, 105, 108, 116, 73, 110, 86, 114, 109,
			77, 97, 116, 101, 114, 105, 97, 108, 68, 101,
			115, 99, 114, 105, 112, 116, 111, 114, 71, 101,
			110, 101, 114, 97, 116, 111, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 95, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 73,
			79, 92, 66, 117, 105, 108, 116, 73, 110, 82,
			80, 92, 73, 109, 112, 111, 114, 116, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 115, 92, 66,
			117, 105, 108, 116, 73, 110, 86, 114, 109, 77,
			84, 111, 111, 110, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 109, 112, 111, 114, 116, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			112, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 79, 92, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 79, 92, 66, 117, 105, 108, 116,
			73, 110, 82, 80, 92, 73, 109, 112, 111, 114,
			116, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			115, 92, 66, 117, 105, 108, 116, 73, 110, 86,
			114, 109, 85, 110, 108, 105, 116, 84, 114, 97,
			110, 115, 112, 97, 114, 101, 110, 116, 90, 87,
			114, 105, 116, 101, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 109, 112, 111, 114, 116, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			81, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 79, 92, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 79, 92, 85, 82, 80, 92, 73,
			109, 112, 111, 114, 116, 92, 85, 114, 112, 86,
			114, 109, 77, 97, 116, 101, 114, 105, 97, 108,
			68, 101, 115, 99, 114, 105, 112, 116, 111, 114,
			71, 101, 110, 101, 114, 97, 116, 111, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 88,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 73, 79, 92, 86, 82, 77, 82, 101, 110,
			100, 101, 114, 80, 105, 112, 101, 108, 105, 110,
			101, 77, 97, 116, 101, 114, 105, 97, 108, 68,
			101, 115, 99, 114, 105, 112, 116, 111, 114, 71,
			101, 110, 101, 114, 97, 116, 111, 114, 85, 116,
			105, 108, 105, 116, 121, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 33, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 79, 92, 86,
			82, 77, 68, 97, 116, 97, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 38, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 79, 92,
			86, 82, 77, 69, 120, 99, 101, 112, 116, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 37, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 79, 92, 86, 82, 77, 69,
			120, 112, 111, 114, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 44, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 86, 82, 77, 73, 109, 112, 111, 114, 116,
			101, 114, 67, 111, 110, 116, 101, 120, 116, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 54,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 86, 82, 77, 73, 109, 112, 111,
			114, 116, 101, 114, 67, 111, 110, 116, 101, 120,
			116, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 49, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 79, 92, 86, 82, 77, 77, 84,
			111, 111, 110, 84, 101, 120, 116, 117, 114, 101,
			73, 109, 112, 111, 114, 116, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 55, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			79, 92, 86, 114, 109, 84, 101, 120, 116, 117,
			114, 101, 68, 101, 115, 99, 114, 105, 112, 116,
			111, 114, 71, 101, 110, 101, 114, 97, 116, 111,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 36, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 79, 92, 86, 114, 109, 85, 116,
			105, 108, 105, 116, 121, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 36, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 86, 82, 77,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 41,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			76, 111, 111, 107, 65, 116, 92, 67, 117, 114,
			118, 101, 77, 97, 112, 112, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 50, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 76,
			111, 111, 107, 65, 116, 92, 76, 111, 111, 107,
			65, 116, 84, 97, 114, 103, 101, 116, 83, 119,
			105, 116, 99, 104, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 40, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 76, 111, 111,
			107, 65, 116, 92, 76, 111, 111, 107, 84, 97,
			114, 103, 101, 116, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 49, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 76, 111, 111, 107, 65,
			116, 92, 77, 97, 116, 114, 105, 120, 52, 120,
			52, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 47, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 76, 111, 111, 107, 65, 116, 92, 79,
			102, 102, 115, 101, 116, 79, 110, 84, 114, 97,
			110, 115, 102, 111, 114, 109, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 39, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 76, 111, 111,
			107, 65, 116, 92, 86, 82, 77, 76, 111, 111,
			107, 65, 116, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 56, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 76, 111, 111, 107, 65, 116,
			92, 86, 82, 77, 76, 111, 111, 107, 65, 116,
			66, 108, 101, 110, 100, 83, 104, 97, 112, 101,
			65, 112, 112, 108, 121, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 50, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 76, 111,
			111, 107, 65, 116, 92, 86, 82, 77, 76, 111,
			111, 107, 65, 116, 66, 111, 110, 101, 65, 112,
			112, 108, 121, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 43, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 76, 111, 111, 107,
			65, 116, 92, 86, 82, 77, 76, 111, 111, 107,
			65, 116, 72, 101, 97, 100, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 35, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 101, 116,
			97, 92, 86, 82, 77, 77, 101, 116, 97, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 46,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			77, 101, 116, 97, 92, 86, 82, 77, 77, 101,
			116, 97, 73, 110, 102, 111, 114, 109, 97, 116,
			105, 111, 110, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 41, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 77, 101, 116, 97, 92, 86,
			82, 77, 77, 101, 116, 97, 79, 98, 106, 101,
			99, 116, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 59, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 83, 107, 105, 110, 110, 101, 100,
			77, 101, 115, 104, 85, 116, 105, 108, 105, 116,
			121, 92, 86, 82, 77, 66, 111, 110, 101, 78,
			111, 114, 109, 97, 108, 105, 122, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 56,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			83, 107, 105, 110, 110, 101, 100, 77, 101, 115,
			104, 85, 116, 105, 108, 105, 116, 121, 92, 86,
			114, 109, 77, 101, 115, 104, 85, 116, 105, 108,
			105, 116, 121, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 56, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 92, 70, 97, 115, 116, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 68,
			105, 115, 112, 111, 115, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 56, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 92, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 82, 101, 112, 108, 97, 99, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 55, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 92, 70, 97, 115, 116, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 83, 101, 114,
			118, 105, 99, 101, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 53, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 92, 84, 114, 97, 110,
			115, 102, 111, 114, 109, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 47, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 86, 82, 77,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			60, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 86, 82, 77, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 67, 111, 108, 108, 105,
			100, 101, 114, 71, 114, 111, 117, 112, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 50, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 92,
			86, 82, 77, 83, 112, 114, 105, 110, 103, 85,
			116, 105, 108, 105, 116, 121, 46, 99, 115
		};
		result.TypesData = new byte[2819]
		{
			0, 0, 0, 0, 20, 86, 82, 77, 124, 66,
			108, 101, 110, 100, 83, 104, 97, 112, 101, 65,
			118, 97, 116, 97, 114, 0, 0, 0, 0, 27,
			86, 82, 77, 124, 66, 108, 101, 110, 100, 83,
			104, 97, 112, 101, 66, 105, 110, 100, 105, 110,
			103, 77, 101, 114, 103, 101, 114, 0, 0, 0,
			0, 66, 86, 82, 77, 46, 66, 108, 101, 110,
			100, 83, 104, 97, 112, 101, 66, 105, 110, 100,
			105, 110, 103, 77, 101, 114, 103, 101, 114, 124,
			68, 105, 99, 116, 105, 111, 110, 97, 114, 121,
			75, 101, 121, 66, 108, 101, 110, 100, 83, 104,
			97, 112, 101, 66, 105, 110, 100, 105, 110, 103,
			67, 111, 109, 112, 97, 114, 101, 114, 0, 0,
			0, 0, 21, 86, 82, 77, 124, 66, 108, 101,
			110, 100, 83, 104, 97, 112, 101, 66, 105, 110,
			100, 105, 110, 103, 0, 0, 0, 0, 24, 86,
			82, 77, 124, 77, 97, 116, 101, 114, 105, 97,
			108, 86, 97, 108, 117, 101, 66, 105, 110, 100,
			105, 110, 103, 0, 0, 0, 0, 18, 86, 82,
			77, 124, 66, 108, 101, 110, 100, 83, 104, 97,
			112, 101, 67, 108, 105, 112, 0, 0, 0, 0,
			25, 86, 82, 77, 124, 66, 108, 101, 110, 100,
			83, 104, 97, 112, 101, 67, 108, 105, 112, 72,
			97, 110, 100, 108, 101, 114, 0, 0, 0, 0,
			17, 86, 82, 77, 124, 66, 108, 101, 110, 100,
			83, 104, 97, 112, 101, 75, 101, 121, 0, 0,
			0, 0, 20, 86, 82, 77, 124, 66, 108, 101,
			110, 100, 83, 104, 97, 112, 101, 77, 101, 114,
			103, 101, 114, 0, 0, 0, 0, 11, 86, 82,
			77, 124, 66, 108, 105, 110, 107, 101, 114, 0,
			0, 0, 0, 30, 86, 82, 77, 124, 77, 97,
			116, 101, 114, 105, 97, 108, 86, 97, 108, 117,
			101, 66, 105, 110, 100, 105, 110, 103, 77, 101,
			114, 103, 101, 114, 0, 0, 0, 0, 72, 86,
			82, 77, 46, 77, 97, 116, 101, 114, 105, 97,
			108, 86, 97, 108, 117, 101, 66, 105, 110, 100,
			105, 110, 103, 77, 101, 114, 103, 101, 114, 124,
			68, 105, 99, 116, 105, 111, 110, 97, 114, 121,
			75, 101, 121, 77, 97, 116, 101, 114, 105, 97,
			108, 86, 97, 108, 117, 101, 66, 105, 110, 100,
			105, 110, 103, 67, 111, 109, 112, 97, 114, 101,
			114, 0, 0, 0, 0, 45, 86, 82, 77, 46,
			77, 97, 116, 101, 114, 105, 97, 108, 86, 97,
			108, 117, 101, 66, 105, 110, 100, 105, 110, 103,
			77, 101, 114, 103, 101, 114, 124, 77, 97, 116,
			101, 114, 105, 97, 108, 84, 97, 114, 103, 101,
			116, 0, 0, 0, 0, 16, 86, 82, 77, 124,
			77, 97, 116, 101, 114, 105, 97, 108, 73, 116,
			101, 109, 0, 0, 0, 0, 19, 86, 82, 77,
			124, 77, 101, 115, 104, 80, 114, 101, 118, 105,
			101, 119, 73, 116, 101, 109, 0, 0, 0, 0,
			23, 86, 82, 77, 124, 80, 114, 101, 118, 105,
			101, 119, 83, 99, 101, 110, 101, 77, 97, 110,
			97, 103, 101, 114, 0, 0, 0, 0, 22, 86,
			82, 77, 124, 86, 82, 77, 66, 108, 101, 110,
			100, 83, 104, 97, 112, 101, 80, 114, 111, 120,
			121, 0, 0, 0, 0, 32, 86, 82, 77, 124,
			86, 82, 77, 66, 108, 101, 110, 100, 83, 104,
			97, 112, 101, 80, 114, 111, 120, 121, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 12, 86, 82, 77, 124, 69, 110, 117,
			109, 85, 116, 105, 108, 0, 0, 0, 0, 18,
			86, 82, 77, 124, 69, 110, 117, 109, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 22, 86, 82, 77, 124, 103, 108, 84,
			70, 95, 86, 82, 77, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 21,
			86, 82, 77, 124, 86, 82, 77, 66, 111, 110,
			101, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 0, 0, 0, 0, 25, 86, 82, 77, 124,
			86, 82, 77, 72, 117, 109, 97, 110, 111, 105,
			100, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 0, 0, 0, 0, 18, 86, 82, 77, 124,
			86, 82, 77, 70, 105, 114, 115, 116, 80, 101,
			114, 115, 111, 110, 0, 0, 0, 0, 43, 86,
			82, 77, 46, 86, 82, 77, 70, 105, 114, 115,
			116, 80, 101, 114, 115, 111, 110, 124, 82, 101,
			110, 100, 101, 114, 101, 114, 70, 105, 114, 115,
			116, 80, 101, 114, 115, 111, 110, 70, 108, 97,
			103, 115, 0, 0, 0, 0, 31, 86, 82, 77,
			124, 86, 82, 77, 70, 105, 114, 115, 116, 80,
			101, 114, 115, 111, 110, 67, 97, 109, 101, 114,
			97, 77, 97, 110, 97, 103, 101, 114, 0, 0,
			0, 0, 50, 86, 82, 77, 46, 86, 82, 77,
			70, 105, 114, 115, 116, 80, 101, 114, 115, 111,
			110, 67, 97, 109, 101, 114, 97, 77, 97, 110,
			97, 103, 101, 114, 124, 67, 97, 109, 101, 114,
			97, 87, 105, 116, 104, 82, 97, 119, 73, 109,
			97, 103, 101, 0, 0, 0, 0, 30, 86, 82,
			77, 124, 103, 108, 84, 70, 95, 86, 82, 77,
			95, 77, 97, 116, 101, 114, 105, 97, 108, 86,
			97, 108, 117, 101, 66, 105, 110, 100, 0, 0,
			0, 0, 27, 86, 82, 77, 124, 103, 108, 84,
			70, 95, 86, 82, 77, 95, 66, 108, 101, 110,
			100, 83, 104, 97, 112, 101, 66, 105, 110, 100,
			0, 0, 0, 0, 28, 86, 82, 77, 124, 103,
			108, 84, 70, 95, 86, 82, 77, 95, 66, 108,
			101, 110, 100, 83, 104, 97, 112, 101, 71, 114,
			111, 117, 112, 0, 0, 0, 0, 29, 86, 82,
			77, 124, 103, 108, 84, 70, 95, 86, 82, 77,
			95, 66, 108, 101, 110, 100, 83, 104, 97, 112,
			101, 77, 97, 115, 116, 101, 114, 0, 0, 0,
			0, 23, 86, 82, 77, 124, 103, 108, 84, 70,
			95, 86, 82, 77, 95, 101, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 22,
			86, 82, 77, 124, 103, 108, 84, 70, 95, 86,
			82, 77, 95, 68, 101, 103, 114, 101, 101, 77,
			97, 112, 0, 0, 0, 0, 27, 86, 82, 77,
			124, 103, 108, 84, 70, 95, 86, 82, 77, 95,
			77, 101, 115, 104, 65, 110, 110, 111, 116, 97,
			116, 105, 111, 110, 0, 0, 0, 0, 24, 86,
			82, 77, 124, 103, 108, 84, 70, 95, 86, 82,
			77, 95, 70, 105, 114, 115, 116, 112, 101, 114,
			115, 111, 110, 0, 0, 0, 0, 25, 86, 82,
			77, 124, 103, 108, 84, 70, 95, 86, 82, 77,
			95, 72, 117, 109, 97, 110, 111, 105, 100, 66,
			111, 110, 101, 0, 0, 0, 0, 21, 86, 82,
			77, 124, 103, 108, 84, 70, 95, 86, 82, 77,
			95, 72, 117, 109, 97, 110, 111, 105, 100, 0,
			0, 0, 0, 21, 86, 82, 77, 124, 103, 108,
			84, 70, 95, 86, 82, 77, 95, 77, 97, 116,
			101, 114, 105, 97, 108, 0, 0, 0, 0, 17,
			86, 82, 77, 124, 103, 108, 84, 70, 95, 86,
			82, 77, 95, 77, 101, 116, 97, 0, 0, 0,
			0, 39, 86, 82, 77, 124, 103, 108, 84, 70,
			95, 86, 82, 77, 95, 83, 101, 99, 111, 110,
			100, 97, 114, 121, 65, 110, 105, 109, 97, 116,
			105, 111, 110, 67, 111, 108, 108, 105, 100, 101,
			114, 0, 0, 0, 0, 44, 86, 82, 77, 124,
			103, 108, 84, 70, 95, 86, 82, 77, 95, 83,
			101, 99, 111, 110, 100, 97, 114, 121, 65, 110,
			105, 109, 97, 116, 105, 111, 110, 67, 111, 108,
			108, 105, 100, 101, 114, 71, 114, 111, 117, 112,
			0, 0, 0, 0, 36, 86, 82, 77, 124, 103,
			108, 84, 70, 95, 86, 82, 77, 95, 83, 101,
			99, 111, 110, 100, 97, 114, 121, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 71, 114, 111, 117,
			112, 0, 0, 0, 0, 31, 86, 82, 77, 124,
			103, 108, 84, 70, 95, 86, 82, 77, 95, 83,
			101, 99, 111, 110, 100, 97, 114, 121, 65, 110,
			105, 109, 97, 116, 105, 111, 110, 0, 0, 0,
			0, 19, 86, 82, 77, 124, 86, 114, 109, 68,
			101, 115, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 0, 0, 0, 0, 16, 86, 82, 77, 124,
			86, 82, 77, 69, 120, 99, 101, 112, 116, 105,
			111, 110, 0, 0, 0, 0, 17, 86, 82, 77,
			124, 86, 82, 77, 83, 101, 114, 105, 97, 108,
			105, 122, 101, 114, 0, 0, 0, 0, 18, 86,
			82, 77, 124, 86, 82, 77, 83, 112, 101, 99,
			86, 101, 114, 115, 105, 111, 110, 0, 0, 0,
			0, 26, 86, 82, 77, 124, 86, 82, 77, 72,
			117, 109, 97, 110, 111, 105, 100, 68, 101, 115,
			99, 114, 105, 112, 116, 105, 111, 110, 0, 0,
			0, 0, 47, 86, 82, 77, 124, 66, 117, 105,
			108, 116, 73, 110, 86, 114, 109, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 77, 97, 116, 101,
			114, 105, 97, 108, 80, 114, 111, 112, 101, 114,
			116, 121, 69, 120, 112, 111, 114, 116, 101, 114,
			0, 0, 0, 0, 30, 86, 82, 77, 124, 66,
			117, 105, 108, 116, 73, 110, 86, 114, 109, 77,
			97, 116, 101, 114, 105, 97, 108, 69, 120, 112,
			111, 114, 116, 101, 114, 0, 0, 0, 0, 35,
			86, 82, 77, 124, 66, 117, 105, 108, 116, 73,
			110, 86, 114, 109, 77, 84, 111, 111, 110, 77,
			97, 116, 101, 114, 105, 97, 108, 69, 120, 112,
			111, 114, 116, 101, 114, 0, 0, 0, 0, 41,
			86, 82, 77, 124, 66, 117, 105, 108, 116, 73,
			110, 86, 114, 109, 77, 97, 116, 101, 114, 105,
			97, 108, 68, 101, 115, 99, 114, 105, 112, 116,
			111, 114, 71, 101, 110, 101, 114, 97, 116, 111,
			114, 0, 0, 0, 0, 35, 86, 82, 77, 124,
			66, 117, 105, 108, 116, 73, 110, 86, 114, 109,
			77, 84, 111, 111, 110, 77, 97, 116, 101, 114,
			105, 97, 108, 73, 109, 112, 111, 114, 116, 101,
			114, 0, 0, 0, 0, 52, 86, 82, 77, 124,
			66, 117, 105, 108, 116, 73, 110, 86, 114, 109,
			85, 110, 108, 105, 116, 84, 114, 97, 110, 115,
			112, 97, 114, 101, 110, 116, 90, 87, 114, 105,
			116, 101, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 109, 112, 111, 114, 116, 101, 114, 0, 0,
			0, 0, 37, 86, 82, 77, 124, 85, 114, 112,
			86, 114, 109, 77, 97, 116, 101, 114, 105, 97,
			108, 68, 101, 115, 99, 114, 105, 112, 116, 111,
			114, 71, 101, 110, 101, 114, 97, 116, 111, 114,
			0, 0, 0, 0, 68, 85, 110, 105, 86, 82,
			77, 124, 86, 114, 109, 82, 101, 110, 100, 101,
			114, 80, 105, 112, 101, 108, 105, 110, 101, 77,
			97, 116, 101, 114, 105, 97, 108, 68, 101, 115,
			99, 114, 105, 112, 116, 111, 114, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 68, 101, 115, 99,
			114, 105, 112, 116, 111, 114, 85, 116, 105, 108,
			105, 116, 121, 0, 0, 0, 0, 11, 86, 82,
			77, 124, 86, 82, 77, 68, 97, 116, 97, 0,
			0, 0, 0, 20, 86, 82, 77, 124, 78, 111,
			116, 86, 114, 109, 48, 69, 120, 99, 101, 112,
			116, 105, 111, 110, 0, 0, 0, 0, 15, 86,
			82, 77, 124, 86, 82, 77, 69, 120, 112, 111,
			114, 116, 101, 114, 0, 0, 0, 0, 22, 86,
			82, 77, 124, 86, 82, 77, 73, 109, 112, 111,
			114, 116, 101, 114, 67, 111, 110, 116, 101, 120,
			116, 0, 0, 0, 0, 32, 86, 82, 77, 124,
			86, 82, 77, 73, 109, 112, 111, 114, 116, 101,
			114, 67, 111, 110, 116, 101, 120, 116, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 27, 86, 82, 77, 124, 86, 82, 77,
			77, 84, 111, 111, 110, 84, 101, 120, 116, 117,
			114, 101, 73, 109, 112, 111, 114, 116, 101, 114,
			0, 0, 0, 0, 33, 86, 82, 77, 124, 86,
			114, 109, 84, 101, 120, 116, 117, 114, 101, 68,
			101, 115, 99, 114, 105, 112, 116, 111, 114, 71,
			101, 110, 101, 114, 97, 116, 111, 114, 0, 0,
			0, 0, 14, 86, 82, 77, 124, 86, 114, 109,
			85, 116, 105, 108, 105, 116, 121, 0, 0, 0,
			0, 17, 86, 82, 77, 124, 73, 86, 82, 77,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 0,
			0, 0, 0, 15, 86, 82, 77, 124, 67, 117,
			114, 118, 101, 77, 97, 112, 112, 101, 114, 0,
			0, 0, 0, 24, 86, 82, 77, 124, 76, 111,
			111, 107, 65, 116, 84, 97, 114, 103, 101, 116,
			83, 119, 105, 116, 99, 104, 101, 114, 0, 0,
			0, 0, 14, 86, 82, 77, 124, 76, 111, 111,
			107, 84, 97, 114, 103, 101, 116, 0, 0, 0,
			0, 23, 86, 82, 77, 124, 77, 97, 116, 114,
			105, 120, 52, 120, 52, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 21,
			86, 82, 77, 124, 79, 102, 102, 115, 101, 116,
			79, 110, 84, 114, 97, 110, 115, 102, 111, 114,
			109, 0, 0, 0, 0, 13, 86, 82, 77, 124,
			86, 82, 77, 76, 111, 111, 107, 65, 116, 0,
			0, 0, 0, 30, 86, 82, 77, 124, 86, 82,
			77, 76, 111, 111, 107, 65, 116, 66, 108, 101,
			110, 100, 83, 104, 97, 112, 101, 65, 112, 112,
			108, 121, 101, 114, 0, 0, 0, 0, 24, 86,
			82, 77, 124, 86, 82, 77, 76, 111, 111, 107,
			65, 116, 66, 111, 110, 101, 65, 112, 112, 108,
			121, 101, 114, 0, 0, 0, 0, 17, 86, 82,
			77, 124, 86, 82, 77, 76, 111, 111, 107, 65,
			116, 72, 101, 97, 100, 0, 0, 0, 0, 11,
			86, 82, 77, 124, 86, 82, 77, 77, 101, 116,
			97, 0, 0, 0, 0, 22, 86, 82, 77, 124,
			86, 82, 77, 77, 101, 116, 97, 73, 110, 102,
			111, 114, 109, 97, 116, 105, 111, 110, 0, 0,
			0, 0, 17, 86, 82, 77, 124, 86, 82, 77,
			77, 101, 116, 97, 79, 98, 106, 101, 99, 116,
			0, 0, 0, 0, 21, 86, 82, 77, 124, 86,
			82, 77, 66, 111, 110, 101, 78, 111, 114, 109,
			97, 108, 105, 122, 101, 114, 0, 0, 0, 0,
			18, 86, 82, 77, 124, 86, 114, 109, 77, 101,
			115, 104, 85, 116, 105, 108, 105, 116, 121, 0,
			0, 0, 0, 26, 86, 82, 77, 124, 70, 97,
			115, 116, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 68, 105, 115, 112, 111, 115, 101, 114,
			0, 0, 0, 0, 26, 86, 82, 77, 124, 70,
			97, 115, 116, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 82, 101, 112, 108, 97, 99, 101,
			114, 0, 0, 0, 0, 25, 86, 82, 77, 124,
			70, 97, 115, 116, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 83, 101, 114, 118, 105, 99,
			101, 0, 0, 0, 0, 23, 86, 82, 77, 124,
			84, 114, 97, 110, 115, 102, 111, 114, 109, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 17, 86, 82, 77, 124, 86, 82,
			77, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 0, 0, 0, 0, 36, 86, 82, 77, 46,
			86, 82, 77, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 124, 86, 82, 77, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 76, 111, 103,
			105, 99, 0, 0, 0, 0, 32, 86, 82, 77,
			46, 86, 82, 77, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 124, 83, 112, 104, 101, 114,
			101, 67, 111, 108, 108, 105, 100, 101, 114, 0,
			0, 0, 0, 30, 86, 82, 77, 124, 86, 82,
			77, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 67, 111, 108, 108, 105, 100, 101, 114, 71,
			114, 111, 117, 112, 0, 0, 0, 0, 45, 86,
			82, 77, 46, 86, 82, 77, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 67, 111, 108, 108,
			105, 100, 101, 114, 71, 114, 111, 117, 112, 124,
			83, 112, 104, 101, 114, 101, 67, 111, 108, 108,
			105, 100, 101, 114, 0, 0, 0, 0, 20, 86,
			82, 77, 124, 86, 82, 77, 83, 112, 114, 105,
			110, 103, 85, 116, 105, 108, 105, 116, 121
		};
		result.TotalFiles = 67;
		result.TotalTypes = 89;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniVRM
{
	public class VrmRenderPipelineMaterialDescriptorGeneratorDescriptorUtility : RenderPipelineMaterialDescriptorGeneratorUtility
	{
		public static IMaterialDescriptorGenerator GetValidVrm10MaterialDescriptorGenerator(glTF_VRM_extensions vrm)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Invalid comparison between Unknown and I4
			RenderPipelineTypes renderPipelineType = RenderPipelineMaterialDescriptorGeneratorUtility.GetRenderPipelineType();
			if ((int)renderPipelineType != 0)
			{
				if ((int)renderPipelineType == 1)
				{
					return (IMaterialDescriptorGenerator)(object)new UrpVrmMaterialDescriptorGenerator(vrm);
				}
				return null;
			}
			return (IMaterialDescriptorGenerator)(object)new BuiltInVrmMaterialDescriptorGenerator(vrm);
		}
	}
}
namespace VRM
{
	[CreateAssetMenu(menuName = "VRM/BlendShapeAvatar")]
	public class BlendShapeAvatar : ScriptableObject
	{
		[SerializeField]
		public List<BlendShapeClip> Clips = new List<BlendShapeClip>();

		public void CreateDefaultPreset()
		{
			BlendShapePreset[] values = CachedEnum.GetValues<BlendShapePreset>();
			foreach (BlendShapePreset blendShapePreset in values)
			{
				if (blendShapePreset != 0)
				{
					CreateDefaultPreset(blendShapePreset);
				}
			}
		}

		private void CreateDefaultPreset(BlendShapePreset preset)
		{
			BlendShapeClip blendShapeClip = null;
			foreach (BlendShapeClip clip in Clips)
			{
				if (clip.Preset == preset)
				{
					blendShapeClip = clip;
					break;
				}
			}
			if (!((Object)(object)blendShapeClip != (Object)null))
			{
				blendShapeClip = ScriptableObject.CreateInstance<BlendShapeClip>();
				((Object)blendShapeClip).name = preset.ToString();
				blendShapeClip.BlendShapeName = preset.ToString();
				blendShapeClip.Preset = preset;
				Clips.Add(blendShapeClip);
			}
		}

		public void SetClip(BlendShapeKey key, BlendShapeClip clip)
		{
			int num = -1;
			try
			{
				num = Clips.FindIndex((BlendShapeClip x) => key.Match(x));
			}
			catch (Exception)
			{
			}
			if (num == -1)
			{
				Clips.Add(clip);
			}
			else
			{
				Clips[num] = clip;
			}
		}

		public BlendShapeClip GetClip(BlendShapeKey key)
		{
			if (Clips == null)
			{
				return null;
			}
			return Clips.FirstOrDefault((BlendShapeClip x) => key.Match(x));
		}

		public BlendShapeClip GetClip(BlendShapePreset preset)
		{
			return GetClip(BlendShapeKey.CreateFromPreset(preset));
		}

		public BlendShapeClip GetClip(string name)
		{
			return GetClip(BlendShapeKey.CreateUnknown(name));
		}
	}
	internal class BlendShapeBindingMerger
	{
		private class DictionaryKeyBlendShapeBindingComparer : IEqualityComparer<BlendShapeBinding>
		{
			public bool Equals(BlendShapeBinding x, BlendShapeBinding y)
			{
				if (x.RelativePath == y.RelativePath)
				{
					return x.Index == y.Index;
				}
				return false;
			}

			public int GetHashCode(BlendShapeBinding obj)
			{
				return obj.RelativePath.GetHashCode() + obj.Index;
			}
		}

		private static DictionaryKeyBlendShapeBindingComparer comparer = new DictionaryKeyBlendShapeBindingComparer();

		private Dictionary<BlendShapeBinding, float> m_blendShapeValueMap = new Dictionary<BlendShapeBinding, float>(comparer);

		private Dictionary<BlendShapeBinding, Action<float>> m_blendShapeSetterMap = new Dictionary<BlendShapeBinding, Action<float>>(comparer);

		public BlendShapeBindingMerger(Dictionary<BlendShapeKey, BlendShapeClip> clipMap, Transform root)
		{
			foreach (KeyValuePair<BlendShapeKey, BlendShapeClip> item in clipMap)
			{
				BlendShapeBinding[] values = item.Value.Values;
				for (int i = 0; i < values.Length; i++)
				{
					BlendShapeBinding binding = values[i];
					if (m_blendShapeSetterMap.ContainsKey(binding))
					{
						continue;
					}
					Transform val = root.Find(binding.RelativePath);
					SkinnedMeshRenderer target = null;
					if ((Object)(object)val != (Object)null)
					{
						target = ((Component)val).GetComponent<SkinnedMeshRenderer>();
					}
					if ((Object)(object)target != (Object)null)
					{
						if (binding.Index >= 0 && binding.Index < target.sharedMesh.blendShapeCount)
						{
							m_blendShapeSetterMap.Add(binding, delegate(float x)
							{
								target.SetBlendShapeWeight(binding.Index, x);
							});
						}
						else
						{
							Debug.LogWarningFormat("Invalid blendshape binding: {0}: {1}", new object[2]
							{
								((Object)target).name,
								binding
							});
						}
					}
					else
					{
						Debug.LogWarningFormat("SkinnedMeshRenderer: {0} not found", new object[1] { binding.RelativePath });
					}
				}
			}
		}

		public void ImmediatelySetValue(BlendShapeClip clip, float value)
		{
			BlendShapeBinding[] values = clip.Values;
			for (int i = 0; i < values.Length; i++)
			{
				BlendShapeBinding key = values[i];
				if (m_blendShapeSetterMap.TryGetValue(key, out var value2))
				{
					value2(key.Weight * value);
				}
			}
		}

		public void AccumulateValue(BlendShapeClip clip, float value)
		{
			BlendShapeBinding[] values = clip.Values;
			for (int i = 0; i < values.Length; i++)
			{
				BlendShapeBinding key = values[i];
				if (m_blendShapeValueMap.TryGetValue(key, out var value2))
				{
					float num = value2 + key.Weight * value;
					m_blendShapeValueMap[key] = Mathf.Clamp(num, 0f, 100f);
				}
				else
				{
					m_blendShapeValueMap[key] = key.Weight * value;
				}
			}
		}

		public void Apply()
		{
			foreach (KeyValuePair<BlendShapeBinding, float> item in m_blendShapeValueMap)
			{
				if (m_blendShapeSetterMap.TryGetValue(item.Key, out var value))
				{
					value(item.Value);
				}
			}
			m_blendShapeValueMap.Clear();
		}
	}
	[Serializable]
	public struct BlendShapeBinding : IEquatable<BlendShapeBinding>
	{
		public string RelativePath;

		public int Index;

		public float Weight;

		public override string ToString()
		{
			return $"{RelativePath}[{Index}]=>{Weight}";
		}

		public bool Equals(BlendShapeBinding other)
		{
			if (string.Equals(RelativePath, other.RelativePath) && Index == other.Index)
			{
				return Weight.Equals(other.Weight);
			}
			return false;
		}

		public override bool Equals(object obj)
		{
			if (obj == null)
			{
				return false;
			}
			if (obj is BlendShapeBinding)
			{
				return Equals((BlendShapeBinding)obj);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return (((((RelativePath != null) ? RelativePath.GetHashCode() : 0) * 397) ^ Index) * 397) ^ Weight.GetHashCode();
		}
	}
	[Serializable]
	public struct MaterialValueBinding : IEquatable<MaterialValueBinding>
	{
		public string MaterialName;

		public string ValueName;

		public Vector4 TargetValue;

		public Vector4 BaseValue;

		public bool Equals(MaterialValueBinding other)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			if (string.Equals(MaterialName, other.MaterialName) && string.Equals(ValueName, other.ValueName) && ((Vector4)(ref TargetValue)).Equals(other.TargetValue))
			{
				return ((Vector4)(ref BaseValue)).Equals(other.BaseValue);
			}
			return false;
		}

		public override bool Equals(object obj)
		{
			if (obj == null)
			{
				return false;
			}
			if (obj is MaterialValueBinding)
			{
				return Equals((MaterialValueBinding)obj);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return (((((((MaterialName != null) ? MaterialName.GetHashCode() : 0) * 397) ^ ((ValueName != null) ? ValueName.GetHashCode() : 0)) * 397) ^ ((object)(Vector4)(ref TargetValue)).GetHashCode()) * 397) ^ ((object)(Vector4)(ref BaseValue)).GetHashCode();
		}
	}
	[CreateAssetMenu(menuName = "VRM/BlendShapeClip")]
	public class BlendShapeClip : ScriptableObject
	{
		[SerializeField]
		public string BlendShapeName = "";

		[SerializeField]
		public BlendShapePreset Preset;

		[SerializeField]
		public BlendShapeBinding[] Values = new BlendShapeBinding[0];

		[SerializeField]
		public MaterialValueBinding[] MaterialValues = new MaterialValueBinding[0];

		[SerializeField]
		public bool IsBinary;

		public BlendShapeKey Key => BlendShapeKey.CreateFromClip(this);

		public void CopyFrom(BlendShapeClip src)
		{
			IsBinary = src.IsBinary;
			MaterialValues = src.MaterialValues.ToArray();
			Values = src.Values.ToArray();
			Preset = src.Preset;
			((Object)this).name = ((Object)src).name;
		}
	}
	[Obsolete("Use VRMBlendShapeProxy")]
	public class BlendShapeClipHandler
	{
		private BlendShapeClip m_clip;

		private SkinnedMeshRenderer[] m_renderers;

		[Obsolete("Use Clip")]
		public BlendShapeClip Cilp => Clip;

		public BlendShapeClip Clip => m_clip;

		public float LastValue { get; private set; }

		public BlendShapeClipHandler(BlendShapeClip clip, Transform transform)
		{
			m_clip = clip;
			if ((Object)(object)m_clip != (Object)null && m_clip.Values != null && (Object)(object)transform != (Object)null)
			{
				m_renderers = m_clip.Values.Select((BlendShapeBinding x) => ((Component)UnityExtensions.GetFromPath(transform, x.RelativePath)).GetComponent<SkinnedMeshRenderer>()).ToArray();
			}
		}

		public void Apply(float value)
		{
			LastValue = value;
			if ((Object)(object)m_clip == (Object)null || m_renderers == null)
			{
				return;
			}
			for (int i = 0; i < m_clip.Values.Length; i++)
			{
				BlendShapeBinding blendShapeBinding = m_clip.Values[i];
				SkinnedMeshRenderer val = m_renderers[i];
				if (blendShapeBinding.Index >= 0 && blendShapeBinding.Index < val.sharedMesh.blendShapeCount)
				{
					val.SetBlendShapeWeight(blendShapeBinding.Index, blendShapeBinding.Weight * value);
				}
			}
		}
	}
	[Serializable]
	public readonly struct BlendShapeKey : IEquatable<BlendShapeKey>, IComparable<BlendShapeKey>
	{
		private static readonly Dictionary<BlendShapePreset, string> PresetNameCacheDictionary = new Dictionary<BlendShapePreset, string>();

		private static readonly string UnknownPresetPrefix = "Unknown_";

		public readonly BlendShapePreset Preset;

		private readonly string m_id;

		public string Name { get; }

		private BlendShapeKey(string name, BlendShapePreset preset)
		{
			Preset = preset;
			if (Preset != 0)
			{
				if (PresetNameCacheDictionary.TryGetValue(Preset, out var value))
				{
					m_id = (Name = value);
					return;
				}
				m_id = (Name = Preset.ToString());
				PresetNameCacheDictionary.Add(Preset, Name);
			}
			else
			{
				Name = ((!string.IsNullOrEmpty(name)) ? name : "");
				m_id = UnknownPresetPrefix + Name;
			}
		}

		public static BlendShapeKey CreateFromPreset(BlendShapePreset preset)
		{
			return new BlendShapeKey("", preset);
		}

		public static BlendShapeKey CreateFromClip(BlendShapeClip clip)
		{
			if ((Object)(object)clip == (Object)null)
			{
				return default(BlendShapeKey);
			}
			return new BlendShapeKey(clip.BlendShapeName, clip.Preset);
		}

		public static BlendShapeKey CreateUnknown(string name)
		{
			return new BlendShapeKey(name, BlendShapePreset.Unknown);
		}

		public override string ToString()
		{
			return m_id.Replace(UnknownPresetPrefix, "");
		}

		public bool Equals(BlendShapeKey other)
		{
			return m_id == other.m_id;
		}

		public override bool Equals(object obj)
		{
			if (obj is BlendShapeKey)
			{
				return Equals((BlendShapeKey)obj);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return m_id.GetHashCode();
		}

		public bool Match(BlendShapeClip clip)
		{
			return Equals(CreateFromClip(clip));
		}

		public int CompareTo(BlendShapeKey other)
		{
			if (Preset != other.Preset)
			{
				return Preset - other.Preset;
			}
			return 0;
		}
	}
	public class BlendShapeMerger
	{
		private Dictionary<BlendShapeKey, BlendShapeClip> m_clipMap;

		private Dictionary<BlendShapeKey, float> m_valueMap;

		private BlendShapeBindingMerger m_blendShapeBindingMerger;

		private MaterialValueBindingMerger m_materialValueBindingMerger;

		public BlendShapeMerger(IEnumerable<BlendShapeClip> clips, Transform root)
		{
			m_clipMap = clips.ToDictionary((BlendShapeClip x) => BlendShapeKey.CreateFromClip(x), (BlendShapeClip x) => x);
			m_valueMap = new Dictionary<BlendShapeKey, float>();
			m_blendShapeBindingMerger = new BlendShapeBindingMerger(m_clipMap, root);
			m_materialValueBindingMerger = new MaterialValueBindingMerger(m_clipMap, root);
		}

		public void Apply()
		{
			m_blendShapeBindingMerger.Apply();
			m_materialValueBindingMerger.Apply();
		}

		public void SetValues(IEnumerable<KeyValuePair<BlendShapeKey, float>> values)
		{
			foreach (KeyValuePair<BlendShapeKey, float> value in values)
			{
				AccumulateValue(value.Key, value.Value);
			}
			Apply();
		}

		public void AccumulateValue(BlendShapeKey key, float value)
		{
			m_valueMap[key] = value;
			if (m_clipMap.TryGetValue(key, out var value2))
			{
				if (value2.IsBinary)
				{
					value = Mathf.Round(value);
				}
				m_blendShapeBindingMerger.AccumulateValue(value2, value);
				m_materialValueBindingMerger.AccumulateValue(value2, value);
			}
		}

		public void ImmediatelySetValue(BlendShapeKey key, float value)
		{
			m_valueMap[key] = value;
			if (m_clipMap.TryGetValue(key, out var value2))
			{
				if (value2.IsBinary)
				{
					value = Mathf.Round(value);
				}
				m_blendShapeBindingMerger.ImmediatelySetValue(value2, value);
				m_materialValueBindingMerger.ImmediatelySetValue(value2, value);
			}
		}

		public void SetValue(BlendShapeKey key, float value, bool immediately)
		{
			if (immediately)
			{
				ImmediatelySetValue(key, value);
			}
			else
			{
				AccumulateValue(key, value);
			}
		}

		public float GetValue(BlendShapeKey key)
		{
			if (!m_valueMap.TryGetValue(key, out var value))
			{
				return 0f;
			}
			return value;
		}

		public void RestoreMaterialInitialValues(IEnumerable<BlendShapeClip> clips)
		{
			m_materialValueBindingMerger.RestoreMaterialInitialValues(clips);
		}
	}
	public class Blinker : MonoBehaviour
	{
		private VRMBlendShapeProxy m_blendShapes;

		[FormerlySerializedAs("m_interVal")]
		[SerializeField]
		public float Interval = 5f;

		[FormerlySerializedAs("m_closingTime")]
		[SerializeField]
		public float ClosingTime = 0.06f;

		[FormerlySerializedAs("m_openingSeconds")]
		[SerializeField]
		public float OpeningSeconds = 0.03f;

		[FormerlySerializedAs("m_closeSeconds")]
		[SerializeField]
		public float CloseSeconds = 0.1f;

		private Coroutine m_coroutine;

		private float m_nextRequest;

		private bool m_request;

		public bool Request
		{
			get
			{
				return m_request;
			}
			set
			{
				if (!(Time.time < m_nextRequest))
				{
					m_request = value;
					m_nextRequest = Time.time + 1f;
				}
			}
		}

		private IEnumerator BlinkRoutine()
		{
			while (true)
			{
				float waitTime = Time.time + Random.value * Interval;
				while (waitTime > Time.time)
				{
					if (Request)
					{
						m_request = false;
						break;
					}
					yield return null;
				}
				float value2 = 0f;
				float closeSpeed = 1f / CloseSeconds;
				while (true)
				{
					value2 += Time.deltaTime * closeSpeed;
					if (value2 >= 1f)
					{
						break;
					}
					m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), value2);
					yield return null;
				}
				m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), 1f);
				yield return (object)new WaitForSeconds(ClosingTime);
				value2 = 1f;
				float openSpeed = 1f / OpeningSeconds;
				while (true)
				{
					value2 -= Time.deltaTime * openSpeed;
					if (value2 < 0f)
					{
						break;
					}
					m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), value2);
					yield return null;
				}
				m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), 0f);
			}
		}

		private void OnEnable()
		{
			m_blendShapes = ((Component)this).GetComponent<VRMBlendShapeProxy>();
			m_coroutine = ((MonoBehaviour)this).StartCoroutine(BlinkRoutine());
		}

		private void OnDisable()
		{
			Debug.Log((object)"StopCoroutine");
			if (m_coroutine != null)
			{
				((MonoBehaviour)this).StopCoroutine(m_coroutine);
				m_coroutine = null;
			}
		}
	}
	internal class MaterialValueBindingMerger
	{
		[StructLayout(LayoutKind.Sequential, Size = 1)]
		private struct DictionaryKeyMaterialValueBindingComparer : IEqualityComparer<MaterialValueBinding>
		{
			public bool Equals(MaterialValueBinding x, MaterialValueBinding y)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0014: 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)
				if (x.TargetValue == y.TargetValue && x.BaseValue == y.BaseValue && x.MaterialName == y.MaterialName)
				{
					return x.ValueName == y.ValueName;
				}
				return false;
			}

			public int GetHashCode(MaterialValueBinding obj)
			{
				return obj.GetHashCode();
			}
		}

		private delegate void Setter(float value, bool firstValue);

		private struct MaterialTarget : IEquatable<MaterialTarget>
		{
			public string MaterialName;

			public string ValueName;

			public bool Equals(MaterialTarget other)
			{
				if (MaterialName == other.MaterialName)
				{
					return ValueName == other.ValueName;
				}
				return false;
			}

			public override bool Equals(object obj)
			{
				if (obj is MaterialTarget)
				{
					return Equals((MaterialTarget)obj);
				}
				return false;
			}

			public override int GetHashCode()
			{
				if (MaterialName == null || ValueName == null)
				{
					return 0;
				}
				return MaterialName.GetHashCode() + ValueName.GetHashCode();
			}

			public static MaterialTarget Create(MaterialValueBinding binding)
			{
				MaterialTarget result = default(MaterialTarget);
				result.MaterialName = binding.MaterialName;
				result.ValueName = binding.ValueName;
				return result;
			}
		}

		private static DictionaryKeyMaterialValueBindingComparer comparer;

		private Dictionary<string, Material> m_materialMap = new Dictionary<string, Material>();

		private Dictionary<MaterialValueBinding, float> m_materialValueMap = new Dictionary<MaterialValueBinding, float>(comparer);

		private Dictionary<MaterialValueBinding, Setter> m_materialSetterMap = new Dictionary<MaterialValueBinding, Setter>(comparer);

		private HashSet<MaterialTarget> m_used = new HashSet<MaterialTarget>();

		public MaterialValueBindingMerger(Dictionary<BlendShapeKey, BlendShapeClip> clipMap, Transform root)
		{
			foreach (Transform item in UnityExtensions.Traverse(root))
			{
				Renderer component = ((Component)item).GetComponent<Renderer>();
				if (!((Object)(object)component != (Object)null))
				{
					continue;
				}
				foreach (Material item2 in component.sharedMaterials.Where((Material y) => (Object)(object)y != (Object)null))
				{
					if (!string.IsNullOrEmpty(((Object)item2).name) && !m_materialMap.ContainsKey(((Object)item2).name))
					{
						m_materialMap.Add(((Object)item2).name, item2);
					}
				}
			}
			foreach (KeyValuePair<BlendShapeKey, BlendShapeClip> item3 in clipMap)
			{
				MaterialValueBinding[] materialValues = item3.Value.MaterialValues;
				for (int i = 0; i < materialValues.Length; i++)
				{
					MaterialValueBinding binding = materialValues[i];
					if (m_materialSetterMap.ContainsKey(binding))
					{
						continue;
					}
					if (m_materialMap.TryGetValue(binding.MaterialName, out var target))
					{
						if (binding.ValueName.EndsWith("_ST_S"))
						{
							string valueName2 = binding.ValueName.Substring(0, binding.ValueName.Length - 2);
							Setter value2 = delegate(float value, bool firstValue)
							{
								//IL_0056: Unknown result type (might be due to invalid IL or missing references)
								//IL_0066: Unknown result type (might be due to invalid IL or missing references)
								//IL_0076: Unknown result type (might be due to invalid IL or missing references)
								//IL_007b: Unknown result type (might be due to invalid IL or missing references)
								//IL_0081: Unknown result type (might be due to invalid IL or missing references)
								//IL_0086: Unknown result type (might be due to invalid IL or missing references)
								//IL_0014: Unknown result type (might be due to invalid IL or missing references)
								//IL_0024: Unknown result type (might be due to invalid IL or missing references)
								//IL_0034: Unknown result type (might be due to invalid IL or missing references)
								//IL_0039: 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_0044: Unknown result type (might be due to invalid IL or missing references)
								//IL_008b: Unknown result type (might be due to invalid IL or missing references)
								//IL_009d: Unknown result type (might be due to invalid IL or missing references)
								//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
								//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
								//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
								//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
								Vector4 val3 = (firstValue ? (binding.BaseValue + (binding.TargetValue - binding.BaseValue) * value) : (target.GetVector(valueName2) + (binding.TargetValue - binding.BaseValue) * value));
								Vector4 vector2 = target.GetVector(valueName2);
								vector2.x = val3.x;
								vector2.z = val3.z;
								target.SetVector(valueName2, vector2);
							};
							m_materialSetterMap.Add(binding, value2);
						}
						else if (binding.ValueName.EndsWith("_ST_T"))
						{
							string valueName = binding.ValueName.Substring(0, binding.ValueName.Length - 2);
							Setter value3 = delegate(float value, bool firstValue)
							{
								//IL_0056: Unknown result type (might be due to invalid IL or missing references)
								//IL_0066: Unknown result type (might be due to invalid IL or missing references)
								//IL_0076: Unknown result type (might be due to invalid IL or missing references)
								//IL_007b: Unknown result type (might be due to invalid IL or missing references)
								//IL_0081: Unknown result type (might be due to invalid IL or missing references)
								//IL_0086: Unknown result type (might be due to invalid IL or missing references)
								//IL_0014: Unknown result type (might be due to invalid IL or missing references)
								//IL_0024: Unknown result type (might be due to invalid IL or missing references)
								//IL_0034: Unknown result type (might be due to invalid IL or missing references)
								//IL_0039: 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_0044: Unknown result type (might be due to invalid IL or missing references)
								//IL_008b: Unknown result type (might be due to invalid IL or missing references)
								//IL_009d: Unknown result type (might be due to invalid IL or missing references)
								//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
								//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
								//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
								//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
								Vector4 val2 = (firstValue ? (binding.BaseValue + (binding.TargetValue - binding.BaseValue) * value) : (target.GetVector(valueName) + (binding.TargetValue - binding.BaseValue) * value));
								Vector4 vector = target.GetVector(valueName);
								vector.y = val2.y;
								vector.w = val2.w;
								target.SetVector(valueName, vector);
							};
							m_materialSetterMap.Add(binding, value3);
						}
						else
						{
							Setter value4 = delegate(float value, bool firstValue)
							{
								//IL_0047: Unknown result type (might be due to invalid IL or missing references)
								//IL_0052: Unknown result type (might be due to invalid IL or missing references)
								//IL_005d: Unknown result type (might be due to invalid IL or missing references)
								//IL_0062: Unknown result type (might be due to invalid IL or missing references)
								//IL_0068: Unknown result type (might be due to invalid IL or missing references)
								//IL_006d: Unknown result type (might be due to invalid IL or missing references)
								//IL_0014: 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_002a: Unknown result type (might be due to invalid IL or missing references)
								//IL_002f: 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_0072: Unknown result type (might be due to invalid IL or missing references)
								//IL_0084: Unknown result type (might be due to invalid IL or missing references)
								//IL_0085: Unknown result type (might be due to invalid IL or missing references)
								Vector4 val = (firstValue ? (binding.BaseValue + (binding.TargetValue - binding.BaseValue) * value) : (target.GetVector(binding.ValueName) + (binding.TargetValue - binding.BaseValue) * value));
								target.SetColor(binding.ValueName, Color.op_Implicit(val));
							};
							m_materialSetterMap.Add(binding, value4);
						}
					}
					else
					{
						Debug.LogWarningFormat("material: {0} not found", new object[1] { binding.MaterialName });
					}
				}
			}
		}

		public void RestoreMaterialInitialValues(IEnumerable<BlendShapeClip> clips)
		{
			if (m_materialMap == null)
			{
				return;
			}
			foreach (BlendShapeClip clip in clips)
			{
				MaterialValueBinding[] materialValues = clip.MaterialValues;
				for (int i = 0; i < materialValues.Length; i++)
				{
					MaterialValueBinding materialValueBinding = materialValues[i];
					if (m_materialMap.TryGetValue(materialValueBinding.MaterialName, out var _))
					{
						string valueName = materialValueBinding.ValueName;
						if (valueName.EndsWith("_ST_S") || valueName.EndsWith("_ST_T"))
						{
							valueName = valueName.Substring(0, valueName.Length - 2);
						}
					}
					else
					{
						Debug.LogWarningFormat("{0} not found", new object[1] { materialValueBinding.MaterialName });
					}
				}
			}
		}

		public void ImmediatelySetValue(BlendShapeClip clip, float value)
		{
			MaterialValueBinding[] materialValues = clip.MaterialValues;
			foreach (MaterialValueBinding key in materialValues)
			{
				if (m_materialSetterMap.TryGetValue(key, out var value2))
				{
					value2(value, firstValue: true);
				}
			}
		}

		public void AccumulateValue(BlendShapeClip clip, float value)
		{
			MaterialValueBinding[] materialValues = clip.MaterialValues;
			foreach (MaterialValueBinding key in materialValues)
			{
				if (m_materialValueMap.TryGetValue(key, out var value2))
				{
					m_materialValueMap[key] = value2 + value;
				}
				else
				{
					m_materialValueMap[key] = value;
				}
			}
		}

		public void Apply()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: 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_0108: 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_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			m_used.Clear();
			foreach (KeyValuePair<MaterialValueBinding, float> item2 in m_materialValueMap)
			{
				MaterialTarget item = MaterialTarget.Create(item2.Key);
				if (!m_used.Contains(item))
				{
					if (m_materialMap.TryGetValue(item.MaterialName, out var value))
					{
						Vector4 baseValue = item2.Key.BaseValue;
						string text = item.ValueName;
						if (text.EndsWith("_ST_S"))
						{
							text = text.Substring(0, text.Length - 2);
							Vector4 vector = value.GetVector(text);
							baseValue.y = vector.y;
							baseValue.w = vector.w;
						}
						else if (text.EndsWith("_ST_T"))
						{
							text = text.Substring(0, text.Length - 2);
							Vector4 vector2 = value.GetVector(text);
							baseValue.x = vector2.x;
							baseValue.z = vector2.z;
						}
						value.SetColor(text, Color.op_Implicit(baseValue));
					}
					m_used.Add(item);
				}
				if (m_materialSetterMap.TryGetValue(item2.Key, out var value2))
				{
					value2(item2.Value, firstValue: false);
				}
			}
			m_materialValueMap.Clear();
		}
	}
	[Serializable]
	public class MaterialItem
	{
		public Material Material { get; private set; }

		public static MaterialItem Create(Material material)
		{
			return new MaterialItem
			{
				Material = material
			};
		}
	}
	[Serializable]
	public class MeshPreviewItem
	{
		private Transform m_transform;

		public string Path { get; private set; }

		public SkinnedMeshRenderer SkinnedMeshRenderer { get; private set; }

		public Mesh Mesh { get; private set; }

		public string[] BlendShapeNames { get; private set; }

		public int BlendShapeCount => BlendShapeNames.Length;

		public Material[] Materials { get; private set; }

		public Vector3 Position => m_transform.position;

		public Quaternion Rotation => m_transform.rotation;

		private MeshPreviewItem(string path, Transform transform, Material[] materials)
		{
			Path = path;
			m_transform = transform;
			Materials = materials;
		}

		public void Bake(IEnumerable<BlendShapeBinding> values, float weight)
		{
			if ((Object)(object)SkinnedMeshRenderer == (Object)null)
			{
				return;
			}
			if (values != null)
			{
				for (int i = 0; i < BlendShapeCount; i++)
				{
					SkinnedMeshRenderer.SetBlendShapeWeight(i, 0f);
				}
				foreach (BlendShapeBinding value in values)
				{
					if (value.RelativePath == Path)
					{
						if (value.Index >= 0 && value.Index < SkinnedMeshRenderer.sharedMesh.blendShapeCount)
						{
							SkinnedMeshRenderer.SetBlendShapeWeight(value.Index, value.Weight * weight);
							continue;
						}
						Debug.LogWarningFormat("Out of range {0}: 0 <= {1} < {2}", new object[3]
						{
							((Object)SkinnedMeshRenderer).name,
							value.Index,
							SkinnedMeshRenderer.sharedMesh.blendShapeCount
						});
					}
				}
			}
			SkinnedMeshRenderer.BakeMesh(Mesh);
		}

		public static MeshPreviewItem Create(Transform t, Transform root, Func<Material, Material> getOrCreateMaterial)
		{
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Expected O, but got Unknown
			MeshFilter component = ((Component)t).GetComponent<MeshFilter>();
			MeshRenderer component2 = ((Component)t).GetComponent<MeshRenderer>();
			SkinnedMeshRenderer component3 = ((Component)t).GetComponent<SkinnedMeshRenderer>();
			if ((Object)(object)component != (Object)null && (Object)(object)component2 != (Object)null)
			{
				((Renderer)component2).sharedMaterials = ((Renderer)component2).sharedMaterials.Select((Material x) => getOrCreateMaterial(x)).ToArray();
				return new MeshPreviewItem(UnityExtensions.RelativePathFrom(t, root), t, ((Renderer)component2).sharedMaterials)
				{
					Mesh = component.sharedMesh
				};
			}
			if ((Object)(object)component3 != (Object)null)
			{
				((Renderer)component3).sharedMaterials = ((Renderer)component3).sharedMaterials.Select((Material x) => getOrCreateMaterial(x)).ToArray();
				if (component3.sharedMesh.blendShapeCount > 0)
				{
					Mesh sharedMesh = component3.sharedMesh;
					return new MeshPreviewItem(UnityExtensions.RelativePathFrom(t, root), t, ((Renderer)component3).sharedMaterials)
					{
						SkinnedMeshRenderer = component3,
						Mesh = new Mesh(),
						BlendShapeNames = (from x in Enumerable.Range(0, sharedMesh.blendShapeCount)
							select sharedMesh.GetBlendShapeName(x)).ToArray()
					};
				}
				return new MeshPreviewItem(UnityExtensions.RelativePathFrom(t, root), t, ((Renderer)component3).sharedMaterials)
				{
					Mesh = component3.sharedMesh
				};
			}
			return null;
		}
	}
	public class PreviewSceneManager : MonoBehaviour
	{
		public GameObject Prefab;

		private MeshPreviewItem[] m_meshes;

		private MeshPreviewItem[] m_blendShapeMeshes;

		private Dictionary<string, MaterialItem> m_materialMap = new Dictionary<string, MaterialItem>();

		private string[] m_rendererPathList;

		private string[] m_skinnedMeshRendererPathList;

		public Transform m_target;

		public IEnumerable<MeshPreviewItem> EnumRenderItems
		{
			get
			{
				if (m_meshes != null)
				{
					MeshPreviewItem[] meshes = m_meshes;
					for (int i = 0; i < meshes.Length; i++)
					{
						yield return meshes[i];
					}
				}
			}
		}

		public string[] MaterialNames { get; private set; }

		public string[] RendererPathList => m_rendererPathList;

		public string[] SkinnedMeshRendererPathList => m_skinnedMeshRendererPathList;

		public Vector3 TargetPosition
		{
			get
			{
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				//IL_003d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0042: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)m_target == (Object)null)
				{
					return new Vector3(0f, 1.4f, 0f);
				}
				return m_target.position + new Vector3(0f, 0.1f, 0f);
			}
		}

		public void Clean()
		{
			foreach (KeyValuePair<string, MaterialItem> item in m_materialMap)
			{
				Object.DestroyImmediate((Object)(object)item.Value.Material);
			}
		}

		private void Initialize(GameObject prefab)
		{
			Prefab = prefab;
			List<string> materialNames = new List<string>();
			Dictionary<Material, Material> map = new Dictionary<Material, Material>();
			Func<Material, Material> getOrCreateMaterial = delegate(Material src)
			{
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Expected O, but got Unknown
				if ((Object)(object)src == (Object)null)
				{
					return null;
				}
				if (string.IsNullOrEmpty(((Object)src).name))
				{
					return null;
				}
				if (!map.TryGetValue(src, out var value))
				{
					value = new Material(src);
					map.Add(src, value);
					materialNames.Add(((Object)src).name);
					m_materialMap.Add(((Object)src).name, MaterialItem.Create(value));
				}
				return value;
			};
			m_meshes = (from x in UnityExtensions.Traverse(((Component)this).transform)
				select MeshPreviewItem.Create(x, ((Component)this).transform, getOrCreateMaterial) into x
				where x != null
				select x).ToArray();
			MaterialNames = materialNames.ToArray();
			m_blendShapeMeshes = m_meshes.Where((MeshPreviewItem x) => (Object)(object)x.SkinnedMeshRenderer != (Object)null && x.SkinnedMeshRenderer.sharedMesh.blendShapeCount > 0).ToArray();
			m_rendererPathList = m_meshes.Select((MeshPreviewItem x) => x.Path).ToArray();
			m_skinnedMeshRendererPathList = (from x in m_meshes
				where (Object)(object)x.SkinnedMeshRenderer != (Object)null
				select x.Path).ToArray();
			Animator component = ((Component)this).GetComponent<Animator>();
			if ((Object)(object)component != (Object)null)
			{
				Transform boneTransform = component.GetBoneTransform((HumanBodyBones)10);
				if ((Object)(object)boneTransform != (Object)null)
				{
					m_target = boneTransform;
				}
			}
		}

		public string[] GetBlendShapeNames(int blendShapeMeshIndex)
		{
			if (blendShapeMeshIndex >= 0 && blendShapeMeshIndex < m_blendShapeMeshes.Length)
			{
				return m_blendShapeMeshes[blendShapeMeshIndex].BlendShapeNames;
			}
			return null;
		}

		public MaterialItem GetMaterialItem(string materialName)
		{
			if (!m_materialMap.TryGetValue(materialName, out var value))
			{
				return null;
			}
			return value;
		}

		public void SetupCamera(Camera camera, Vector3 target, float yaw, float pitch, Vector3 position)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			camera.backgroundColor = Color.gray;
			camera.clearFlags = (CameraClearFlags)2;
			camera.fieldOfView = 27f;
			camera.nearClipPlane = 0.3f;
			camera.farClipPlane = (0f - position.z) * 2.1f;
			Matrix4x4 val = Matrix4x4.Translate(position);
			Matrix4x4 val2 = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(pitch, yaw, 0f), Vector3.one) * val;
			((Component)camera).transform.position = target + UnityExtensions.ExtractPosition(val2);
			((Component)camera).transform.rotation = UnityExtensions.ExtractRotation(val2);
		}
	}
	[DisallowMultipleComponent]
	public class VRMBlendShapeProxy : MonoBehaviour, IVRMComponent
	{
		[SerializeField]
		public BlendShapeAvatar BlendShapeAvatar;

		private BlendShapeMerger m_merger;

		private bool m_destroyed;

		public void OnImported(VRMImporterContext context)
		{
			throw new NotImplementedException();
		}

		private void OnDestroy()
		{
			m_destroyed = true;
			if (m_merger != null)
			{
				m_merger.RestoreMaterialInitialValues(BlendShapeAvatar.Clips);
			}
		}

		private void Start()
		{
			if (!m_destroyed && !((Object)(object)BlendShapeAvatar == (Object)null))
			{
				m_merger = new BlendShapeMerger(BlendShapeAvatar.Clips, ((Component)this).transform);
			}
		}

		public void Reinitialize()
		{
			Start();
		}

		public void ImmediatelySetValue(BlendShapeKey key, float value)
		{
			if (m_merger != null)
			{
				m_merger.ImmediatelySetValue(key, value);
			}
		}

		public void AccumulateValue(BlendShapeKey key, float value)
		{
			if (m_merger != null)
			{
				m_merger.AccumulateValue(key, value);
			}
		}

		public float GetValue(BlendShapeKey key)
		{
			if (m_merger == null)
			{
				return 0f;
			}
			return m_merger.GetValue(key);
		}

		public IEnumerable<KeyValuePair<BlendShapeKey, float>> GetValues()
		{
			if (m_merger == null || !((Object)(object)BlendShapeAvatar != (Object)null))
			{
				yield break;
			}
			foreach (BlendShapeClip clip in BlendShapeAvatar.Clips)
			{
				BlendShapeKey key = BlendShapeKey.CreateFromClip(clip);
				yield return new KeyValuePair<BlendShapeKey, float>(key, m_merger.GetValue(key));
			}
		}

		public void SetValues(IEnumerable<KeyValuePair<BlendShapeKey, float>> values)
		{
			if (m_merger != null)
			{
				m_merger.SetValues(values);
			}
		}

		public void Apply()
		{
			if (m_merger != null)
			{
				m_merger.Apply();
			}
		}
	}
	public static class VRMBlendShapeProxyExtensions
	{
		[Obsolete("Use BlendShapeKey.CreateFromPreset")]
		public static float GetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key)
		{
			return proxy.GetValue(BlendShapeKey.CreateFromPreset(key));
		}

		[Obsolete("Use BlendShapeKey.CreateUnknown")]
		public static float GetValue(this VRMBlendShapeProxy proxy, string key)
		{
			return proxy.GetValue(BlendShapeKey.CreateUnknown(key));
		}

		[Obsolete("Use ImmediatelySetValue")]
		public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value)
		{
			proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(key), value);
		}

		[Obsolete("Use BlendShapeKey.CreateFromPreset")]
		public static void ImmediatelySetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value)
		{
			proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(key), value);
		}

		[Obsolete("Use BlendShapeKey.CreateFromPreset")]
		public static void AccumulateValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value)
		{
			proxy.AccumulateValue(BlendShapeKey.CreateFromPreset(key), value);
		}

		[Obsolete("Use ImmediatelySetValue")]
		public static void SetValue(this VRMBlendShapeProxy proxy, string key, float value)
		{
			proxy.ImmediatelySetValue(BlendShapeKey.CreateUnknown(key), value);
		}

		[Obsolete("Use BlendShapeKey.CreateUnknown")]
		public static void ImmediatelySetValue(this VRMBlendShapeProxy proxy, string key, float value)
		{
			proxy.ImmediatelySetValue(BlendShapeKey.CreateUnknown(key), value);
		}

		[Obsolete("Use BlendShapeKey.CreateUnknown")]
		public static void AccumulateValue(this VRMBlendShapeProxy proxy, string key, float value)
		{
			proxy.AccumulateValue(BlendShapeKey.CreateUnknown(key), value);
		}

		[Obsolete("Use ImmediatelySetValue")]
		public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapeKey key, float value)
		{
			proxy.ImmediatelySetValue(key, value);
		}

		[Obsolete("Use ImmediatelySetValue or AccumulateValue")]
		public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value, bool apply)
		{
			if (apply)
			{
				proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(key), value);
			}
			else
			{
				proxy.AccumulateValue(BlendShapeKey.CreateFromPreset(key), value);
			}
		}

		[Obsolete("Use ImmediatelySetValue or AccumulateValue")]
		public static void SetValue(this VRMBlendShapeProxy proxy, string key, float value, bool apply)
		{
			if (apply)
			{
				proxy.ImmediatelySetValue(BlendShapeKey.CreateUnknown(key), value);
			}
			else
			{
				proxy.AccumulateValue(BlendShapeKey.CreateUnknown(key), value);
			}
		}

		[Obsolete("Use ImmediatelySetValue or AccumulateValue")]
		public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapeKey key, float value, bool apply)
		{
			if (apply)
			{
				proxy.ImmediatelySetValue(key, value);
			}
			else
			{
				proxy.AccumulateValue(key, value);
			}
		}
	}
	public static class EnumUtil
	{
		public static T TryParseOrDefault<T>(string src, T defaultValue = default(T)) where T : struct
		{
			try
			{
				return (T)Enum.Parse(typeof(T), src, ignoreCase: true);
			}
			catch (Exception)
			{
				return defaultValue;
			}
		}
	}
	public static class EnumExtensions
	{
		public static HumanBodyBones ToUnityBone(this VRMBone val)
		{
			return (HumanBodyBones)(val switch
			{
				VRMBone.hips => 0, 
				VRMBone.leftUpperLeg => 1, 
				VRMBone.rightUpperLeg => 2, 
				VRMBone.leftLowerLeg => 3, 
				VRMBone.rightLowerLeg => 4, 
				VRMBone.leftFoot => 5, 
				VRMBone.rightFoot => 6, 
				VRMBone.spine => 7, 
				VRMBone.chest => 8, 
				VRMBone.neck => 9, 
				VRMBone.head => 10, 
				VRMBone.leftShoulder => 11, 
				VRMBone.rightShoulder => 12, 
				VRMBone.leftUpperArm => 13, 
				VRMBone.rightUpperArm => 14, 
				VRMBone.leftLowerArm => 15, 
				VRMBone.rightLowerArm => 16, 
				VRMBone.leftHand => 17, 
				VRMBone.rightHand => 18, 
				VRMBone.leftToes => 19, 
				VRMBone.rightToes => 20, 
				VRMBone.leftEye => 21, 
				VRMBone.rightEye => 22, 
				VRMBone.jaw => 23, 
				VRMBone.leftThumbProximal => 24, 
				VRMBone.leftThumbIntermediate => 25, 
				VRMBone.leftThumbDistal => 26, 
				VRMBone.leftIndexProximal => 27, 
				VRMBone.leftIndexIntermediate => 28, 
				VRMBone.leftIndexDistal => 29, 
				VRMBone.leftMiddleProximal => 30, 
				VRMBone.leftMiddleIntermediate => 31, 
				VRMBone.leftMiddleDistal => 32, 
				VRMBone.leftRingProximal => 33, 
				VRMBone.leftRingIntermediate => 34, 
				VRMBone.leftRingDistal => 35, 
				VRMBone.leftLittleProximal => 36, 
				VRMBone.leftLittleIntermediate => 37, 
				VRMBone.leftLittleDistal => 38, 
				VRMBone.rightThumbProximal => 39, 
				VRMBone.rightThumbIntermediate => 40, 
				VRMBone.rightThumbDistal => 41, 
				VRMBone.rightIndexProximal => 42, 
				VRMBone.rightIndexIntermediate => 43, 
				VRMBone.rightIndexDistal => 44, 
				VRMBone.rightMiddleProximal => 45, 
				VRMBone.rightMiddleIntermediate => 46, 
				VRMBone.rightMiddleDistal => 47, 
				VRMBone.rightRingProximal => 48, 
				VRMBone.rightRingIntermediate => 49, 
				VRMBone.rightRingDistal => 50, 
				VRMBone.rightLittleProximal => 51, 
				VRMBone.rightLittleIntermediate => 52, 
				VRMBone.rightLittleDistal => 53, 
				VRMBone.upperChest => 54, 
				_ => throw new InvalidOperationException(), 
			});
		}

		public static VRMBone ToVrmBone(this HumanBodyBones val)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Expected I4, but got Unknown
			return (int)val switch
			{
				0 => VRMBone.hips, 
				1 => VRMBone.leftUpperLeg, 
				2 => VRMBone.rightUpperLeg, 
				3 => VRMBone.leftLowerLeg, 
				4 => VRMBone.rightLowerLeg, 
				5 => VRMBone.leftFoot, 
				6 => VRMBone.rightFoot, 
				7 => VRMBone.spine, 
				8 => VRMBone.chest, 
				9 => VRMBone.neck, 
				10 => VRMBone.head, 
				11 => VRMBone.leftShoulder, 
				12 => VRMBone.rightShoulder, 
				13 => VRMBone.leftUpperArm, 
				14 => VRMBone.rightUpperArm, 
				15 => VRMBone.leftLowerArm, 
				16 => VRMBone.rightLowerArm, 
				17 => VRMBone.leftHand, 
				18 => VRMBone.rightHand, 
				19 => VRMBone.leftToes, 
				20 => VRMBone.rightToes, 
				21 => VRMBone.leftEye, 
				22 => VRMBone.rightEye, 
				23 => VRMBone.jaw, 
				24 => VRMBone.leftThumbProximal, 
				25 => VRMBone.leftThumbIntermediate, 
				26 => VRMBone.leftThumbDistal, 
				27 => VRMBone.leftIndexProximal, 
				28 => VRMBone.leftIndexIntermediate, 
				29 => VRMBone.leftIndexDistal, 
				30 => VRMBone.leftMiddleProximal, 
				31 => VRMBone.leftMiddleIntermediate, 
				32 => VRMBone.leftMiddleDistal, 
				33 => VRMBone.leftRingProximal, 
				34 => VRMBone.leftRingIntermediate, 
				35 => VRMBone.leftRingDistal, 
				36 => VRMBone.leftLittleProximal, 
				37 => VRMBone.leftLittleIntermediate, 
				38 => VRMBone.leftLittleDistal, 
				39 => VRMBone.rightThumbProximal, 
				40 => VRMBone.rightThumbIntermediate, 
				41 => VRMBone.rightThumbDistal, 
				42 => VRMBone.rightIndexProximal, 
				43 => VRMBone.rightIndexIntermediate, 
				44 => VRMBone.rightIndexDistal, 
				45 => VRMBone.rightMiddleProximal, 
				46 => VRMBone.rightMiddleIntermediate, 
				47 => VRMBone.rightMiddleDistal, 
				48 => VRMBone.rightRingProximal, 
				49 => VRMBone.rightRingIntermediate, 
				50 => VRMBone.rightRingDistal, 
				51 => VRMBone.rightLittleProximal, 
				52 => VRMBone.rightLittleIntermediate, 
				53 => VRMBone.rightLittleDistal, 
				54 => VRMBone.upperChest, 
				_ => throw new InvalidOperationException(), 
			};
		}
	}
	public static class glTF_VRMExtensions
	{
		[Obsolete("Use Create(root, meshes, binding)")]
		public static glTF_VRM_BlendShapeBind Cerate(Transform root, BlendShapeBinding binding, gltfExporter exporter)
		{
			return Create(root, binding, exporter);
		}

		public static glTF_VRM_BlendShapeBind Create(Transform root, BlendShapeBinding binding, gltfExporter exporter)
		{
			if ((Object)(object)root == (Object)null || exporter == null)
			{
				return null;
			}
			if (string.IsNullOrEmpty(binding.RelativePath))
			{
				Debug.LogWarning((object)"binding.RelativePath is null");
				return null;
			}
			Transform val = ((Component)root).transform.Find(binding.RelativePath);
			if ((Object)(object)val == (Object)null)
			{
				string name = binding.RelativePath.Split('/').Last();
				val = ((IEnumerable<Transform>)((Component)root).GetComponentsInChildren<Transform>()).FirstOrDefault((Func<Transform, bool>)((Transform x) => ((Object)x).name == name));
				if ((Object)(object)val == (Object)null)
				{
					Debug.LogWarning((object)(binding.RelativePath + " not found"));
					return null;
				}
				Debug.LogWarning((object)("fall back '" + binding.RelativePath + "' => '" + UnityExtensions.RelativePathFrom(val, root) + "'"));
			}
			SkinnedMeshRenderer component = ((Component)val).GetComponent<SkinnedMeshRenderer>();
			if ((Object)(object)component == (Object)null)
			{
				return null;
			}
			if (!((Component)component).gameObject.activeInHierarchy)
			{
				return null;
			}
			Mesh sharedMesh = component.sharedMesh;
			int num = exporter.Meshes.IndexOf(sharedMesh);
			if (num == -1)
			{
				return null;
			}
			if (!exporter.MeshBlendShapeIndexMap.TryGetValue(sharedMesh, out var value))
			{
				return null;
			}
			if (!value.TryGetValue(binding.Index, out var value2))
			{
				return null;
			}
			return new glTF_VRM_BlendShapeBind
			{
				mesh = num,
				index = value2,
				weight = binding.Weight
			};
		}

		public static void Add(this glTF_VRM_BlendShapeMaster master, BlendShapeClip clip, gltfExporter exporter)
		{
			master.blendShapeGroups.Add(clip.Serialize(exporter));
		}

		public static glTF_VRM_BlendShapeGroup Serialize(this BlendShapeClip clip, gltfExporter exporter)
		{
			List<glTF_VRM_BlendShapeBind> list = new List<glTF_VRM_BlendShapeBind>();
			if (clip.Values != null && exporter != null)
			{
				BlendShapeBinding[] values = clip.Values;
				foreach (BlendShapeBinding binding in values)
				{
					glTF_VRM_BlendShapeBind glTF_VRM_BlendShapeBind2 = Create(exporter.Copy.transform, binding, exporter);
					if (glTF_VRM_BlendShapeBind2 != null)
					{
						list.Add(glTF_VRM_BlendShapeBind2);
					}
				}
			}
			List<glTF_VRM_MaterialValueBind> list2 = new List<glTF_VRM_MaterialValueBind>();
			if (clip.MaterialValues != null)
			{
				list2.AddRange(clip.MaterialValues.Select((MaterialValueBinding y) => new glTF_VRM_MaterialValueBind
				{
					materialName = y.MaterialName,
					propertyName = y.ValueName,
					targetValue = UnityExtensions.ToArray(y.TargetValue)
				}));
			}
			return new glTF_VRM_BlendShapeGroup
			{
				name = clip.BlendShapeName,
				presetName = clip.Preset.ToString().ToLowerInvariant(),
				isBinary = clip.IsBinary,
				binds = list,
				materialValues = list2
			};
		}

		public static void Apply(this glTF_VRM_DegreeMap map, CurveMapper mapper)
		{
			map.curve = mapper.Curve.keys.SelectMany((Keyframe x) => new float[4]
			{
				((Keyframe)(ref x)).time,
				((Keyframe)(ref x)).value,
				((Keyframe)(ref x)).inTangent,
				((Keyframe)(ref x)).outTangent
			}).ToArray();
			map.xRange = mapper.CurveXRangeDegree;
			map.yRange = mapper.CurveYRangeDegree;
		}
	}
	public static class VRMBoneExtensions
	{
		public static VRMBone FromHumanBodyBone(this HumanBodyBones human)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			return human.ToVrmBone();
		}

		public static HumanBodyBones ToHumanBodyBone(this VRMBone bone)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return bone.ToUnityBone();
		}
	}
	public static class VRMHumanoidExtensions
	{
		public static void SetNodeIndex(this glTF_VRM_Humanoid self, HumanBodyBones _key, int node)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			VRMBone key = _key.FromHumanBodyBone();
			int num = self.humanBones.FindIndex((glTF_VRM_HumanoidBone x) => x.vrmBone == key);
			if (num == -1 || self.humanBones[num] == null)
			{
				self.humanBones.Add(new glTF_VRM_HumanoidBone
				{
					vrmBone = key,
					node = node
				});
			}
			else
			{
				self.humanBones[num].node = node;
			}
		}

		public static void Apply(this glTF_VRM_Humanoid self, AvatarDescription desc, List<Transform> nodes)
		{
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			self.armStretch = desc.armStretch;
			self.legStretch = desc.legStretch;
			self.upperArmTwist = desc.upperArmTwist;
			self.lowerArmTwist = desc.lowerArmTwist;
			self.upperLegTwist = desc.upperLegTwist;
			self.lowerLegTwist = desc.lowerArmTwist;
			self.feetSpacing = desc.feetSpacing;
			self.hasTranslationDoF = desc.hasTranslationDoF;
			BoneLimit[] human = desc.human;
			for (int i = 0; i < human.Length; i++)
			{
				BoneLimit x = human[i];
				VRMBone key = x.humanBone.FromHumanBodyBone();
				glTF_VRM_HumanoidBone glTF_VRM_HumanoidBone2 = self.humanBones.FirstOrDefault((glTF_VRM_HumanoidBone y) => y.vrmBone == key);
				if (glTF_VRM_HumanoidBone2 == null)
				{
					glTF_VRM_HumanoidBone2 = new glTF_VRM_HumanoidBone
					{
						vrmBone = key
					};
					self.humanBones.Add(glTF_VRM_HumanoidBone2);
				}
				glTF_VRM_HumanoidBone2.node = nodes.FindIndex((Transform y) => ((Object)y).name == x.boneName);
				glTF_VRM_HumanoidBone2.useDefaultValues = x.useDefaultValues;
				glTF_VRM_HumanoidBone2.axisLength = x.axisLength;
				glTF_VRM_HumanoidBone2.center = x.center;
				glTF_VRM_HumanoidBone2.max = x.max;
				glTF_VRM_HumanoidBone2.min = x.min;
			}
		}

		public static AvatarDescription ToDescription(this glTF_VRM_Humanoid self, List<Transform> nodes)
		{
			//IL_00aa: 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_00ee: 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_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			AvatarDescription val = ScriptableObject.CreateInstance<AvatarDescription>();
			val.upperLegTwist = self.upperLegTwist;
			val.lowerLegTwist = self.lowerLegTwist;
			val.upperArmTwist = self.upperArmTwist;
			val.lowerArmTwist = self.lowerArmTwist;
			val.armStretch = self.armStretch;
			val.legStretch = self.legStretch;
			val.hasTranslationDoF = self.hasTranslationDoF;
			BoneLimit[] array = (BoneLimit[])(object)new BoneLimit[self.humanBones.Count];
			int num = 0;
			foreach (glTF_VRM_HumanoidBone humanBone in self.humanBones)
			{
				if (humanBone.node >= 0 && humanBone.node < nodes.Count)
				{
					array[num] = new BoneLimit
					{
						boneName = ((Object)nodes[humanBone.node]).name,
						useDefaultValues = humanBone.useDefaultValues,
						axisLength = humanBone.axisLength,
						center = humanBone.center,
						min = humanBone.min,
						max = humanBone.max,
						humanBone = humanBone.vrmBone.ToHumanBodyBone()
					};
					num++;
				}
			}
			val.human = array;
			return val;
		}
	}
	public class VRMFirstPerson : MonoBehaviour
	{
		[Serializable]
		public struct RendererFirstPersonFlags
		{
			public Renderer Renderer;

			public FirstPersonFlag FirstPersonFlag;

			public Mesh SharedMesh
			{
				get
				{
					Renderer renderer = Renderer;
					SkinnedMeshRenderer val = (SkinnedMeshRenderer)(object)((renderer is SkinnedMeshRenderer) ? renderer : null);
					if ((Object)(object)val != (Object)null)
					{
						return val.sharedMesh;
					}
					MeshFilter component = ((Component)Renderer).GetComponent<MeshFilter>();
					if ((Object)(object)component != (Object)null)
					{
						return component.sharedMesh;
					}
					return null;
				}
			}
		}

		public delegate void SetVisibilityFunc(Renderer renderer, bool firstPerson, bool thirdPerson);

		[Obsolete("Use SetVisibilityFunc")]
		public delegate void SetVisiblityFunc(Renderer renderer, bool firstPerson, bool thirdPerson);

		public static bool TriedSetupLayer = false;

		public static int FIRSTPERSON_ONLY_LAYER = 9;

		public static int THIRDPERSON_ONLY_LAYER = 10;

		[SerializeField]
		public Transform FirstPersonBone;

		[SerializeField]
		public Vector3 FirstPersonOffset;

		[SerializeField]
		public List<RendererFirstPersonFlags> Renderers = new List<RendererFirstPersonFlags>();

		private bool m_done;

		private List<Mesh> m_headlessMeshes = new List<Mesh>();

		public void CopyTo(GameObject _dst, Dictionary<Transform, Transform> map)
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			VRMFirstPerson vRMFirstPerson = _dst.AddComponent<VRMFirstPerson>();
			vRMFirstPerson.FirstPersonBone = map[FirstPersonBone];
			vRMFirstPerson.FirstPersonOffset = FirstPersonOffset;
			vRMFirstPerson.Renderers = Renderers.Where(delegate(RendererFirstPersonFlags x)
			{
				if ((Object)(object)x.Renderer == (Object)null || (Object)(object)((Component)x.Renderer).transform == (Object)null)
				{
					Debug.LogWarning((object)"[VRMFirstPerson] Renderer is null", (Object)(object)this);
					return false;
				}
				if (!map.ContainsKey(((Component)x.Renderer).transform))
				{
					Debug.LogWarning((object)"[VRMFirstPerson] Cannot copy. Not found ?", (Object)(object)this);
					return false;
				}
				return true;
			}).Select(delegate(RendererFirstPersonFlags x)
			{
				Renderer component = ((Component)map[((Component)x.Renderer).transform]).GetComponent<Renderer>();
				RendererFirstPersonFlags result = default(RendererFirstPersonFlags);
				result.Renderer = component;
				result.FirstPersonFlag = x.FirstPersonFlag;
				return result;
			}).ToList();
		}

		public void SetDefault()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			FirstPersonOffset = new Vector3(0f, 0.06f, 0f);
			Animator component = ((Component)this).GetComponent<Animator>();
			if ((Object)(object)component != (Object)null)
			{
				FirstPersonBone = component.GetBoneTransform((HumanBodyBones)10);
			}
		}

		public void Reset()
		{
			SetDefault();
			TraverseRenderers();
		}

		public void TraverseRenderers(VRMImporterContext context = null)
		{
			Renderers.Clear();
			Renderer[] componentsInChildren = ((Component)((Component)this).transform).GetComponentsInChildren<Renderer>();
			foreach (Renderer val in componentsInChildren)
			{
				RendererFirstPersonFlags rendererFirstPersonFlags = default(RendererFirstPersonFlags);
				rendererFirstPersonFlags.Renderer = val;
				rendererFirstPersonFlags.FirstPersonFlag = ((context != null) ? GetFirstPersonFlag(context, val) : FirstPersonFlag.Auto);
				RendererFirstPersonFlags item = rendererFirstPersonFlags;
				Renderers.Add(item);
			}
		}

		private static FirstPersonFlag GetFirstPersonFlag(VRMImporterContext context, Renderer r)
		{
			Mesh mesh = UnityExtensions.GetSharedMesh(((Component)r).transform);
			if ((Object)(object)mesh == (Object)null)
			{
				return FirstPersonFlag.Auto;
			}
			int num = ((ImporterContext)context).Meshes.FindIndex((MeshWithMaterials x) => (Object)(object)x.Mesh == (Object)(object)mesh);
			if (num == -1)
			{
				return FirstPersonFlag.Auto;
			}
			foreach (glTF_VRM_MeshAnnotation meshAnnotation in context.VRM.firstPerson.meshAnnotations)
			{
				if (meshAnnotation.mesh == num)
				{
					return CachedEnum.ParseOrDefault<FirstPersonFlag>(meshAnnotation.firstPersonFlag, true, FirstPersonFlag.Auto);
				}
			}
			return FirstPersonFlag.Auto;
		}

		private Mesh CreateHeadlessModel(Renderer _renderer, Transform EraseRoot, SetVisibilityFunc setVisibility)
		{
			SkinnedMeshRenderer val = (SkinnedMeshRenderer)(object)((_renderer is SkinnedMeshRenderer) ? _renderer : null);
			if ((Object)(object)val != (Object)null)
			{
				return CreateHeadlessModelForSkinnedMeshRenderer(val, EraseRoot, setVisibility);
			}
			MeshRenderer val2 = (MeshRenderer)(object)((_renderer is MeshRenderer) ? _renderer : null);
			if ((Object)(object)val2 != (Object)null)
			{
				CreateHeadlessModelForMeshRenderer(val2, EraseRoot, setVisibility);
				return null;
			}
			return null;
		}

		public static void SetupLayers()
		{
			if (!TriedSetupLayer)
			{
				TriedSetupLayer = true;
				int num = LayerMask.NameToLayer("VRMFirstPersonOnly");
				FIRSTPERSON_ONLY_LAYER = ((num == -1) ? FIRSTPERSON_ONLY_LAYER : num);
				num = LayerMask.NameToLayer("VRMThirdPersonOnly");
				THIRDPERSON_ONLY_LAYER = ((num == -1) ? THIRDPERSON_ONLY_LAYER : num);
			}
		}

		private static void CreateHeadlessModelForMeshRenderer(MeshRenderer renderer, Transform eraseRoot, SetVisibilityFunc setVisibility)
		{
			if (UnityExtensions.Ancestors(((Component)renderer).transform).Any((Transform x) => (Object)(object)x == (Object)(object)eraseRoot))
			{
				setVisibility((Renderer)(object)renderer, firstPerson: false, thirdPerson: true);
			}
		}

		private static Mesh CreateHeadlessModelForSkinnedMeshRenderer(SkinnedMeshRenderer renderer, Transform eraseRoot, SetVisibilityFunc setVisibility)
		{
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: 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)
			Transform[] bones = renderer.bones;
			int[] array = (from x in bones.Select(delegate(Transform x, int i)
				{
					bool erase = UnityExtensions.Ancestors(x).Any((Transform y) => (Object)(object)y == (Object)(object)eraseRoot);
					return new { i, erase };
				})
				where x.erase
				select x.i).ToArray();
			if (array.Length == 0)
			{
				return null;
			}
			setVisibility((Renderer)(object)renderer, firstPerson: false, thirdPerson: true);
			Mesh val = BoneMeshEraser.CreateErasedMesh(renderer.sharedMesh, array);
			if (val.triangles.Length == 0)
			{
				Object.Destroy((Object)(object)val);
				return null;
			}
			GameObject val2 = new GameObject("_headless_" + ((Object)renderer).name)
			{
				layer = FIRSTPERSON_ONLY_LAYER
			};
			val2.transform.SetParent(((Component)renderer).transform, false);
			SkinnedMeshRenderer obj = val2.AddComponent<SkinnedMeshRenderer>();
			obj.sharedMesh = val;
			((Renderer)obj).sharedMaterials = ((Renderer)renderer).sharedMaterials;
			obj.bones = bones;
			obj.rootBone = renderer.rootBone;
			obj.updateWhenOffscreen = true;
			return val;
		}

		public static void SetVisibility(Renderer renderer, bool firstPerson, bool thirdPerson)
		{
			SetupLayers();
			if (!(firstPerson && thirdPerson))
			{
				if (firstPerson)
				{
					((Component)renderer).gameObject.layer = FIRSTPERSON_ONLY_LAYER;
				}
				else if (thirdPerson)
				{
					((Component)renderer).gameObject.layer = THIRDPERSON_ONLY_LAYER;
				}
				else
				{
					renderer.enabled = false;
				}
			}
		}

		[Obsolete("Use SetVisibility")]
		public static void SetVisiblity(Renderer renderer, bool firstPerson, bool thirdPerson)
		{
			SetVisibility(renderer, firstPerson, thirdPerson);
		}

		public void Setup()
		{
			Setup(isSelf: true, SetVisibility);
		}

		public void Setup(bool isSelf, SetVisibilityFunc setVisibility)
		{
			if (m_done)
			{
				return;
			}
			m_done = true;
			if (isSelf)
			{
				foreach (RendererFirstPersonFlags renderer in Renderers)
				{
					switch (renderer.FirstPersonFlag)
					{
					case FirstPersonFlag.Auto:
					{
						Mesh val = CreateHeadlessModel(renderer.Renderer, FirstPersonBone, setVisibility);
						if ((Object)(object)val != (Object)null)
						{
							m_headlessMeshes.Add(val);
						}
						break;
					}
					case FirstPersonFlag.FirstPersonOnly:
						setVisibility(renderer.Renderer, firstPerson: true, thirdPerson: false);
						break;
					case FirstPersonFlag.ThirdPersonOnly:
						setVisibility(renderer.Renderer, firstPerson: false, thirdPerson: true);
						break;
					case FirstPersonFlag.Both:
						setVisibility(renderer.Renderer, firstPerson: true, thirdPerson: true);
						break;
					}
				}
				return;
			}
			foreach (RendererFirstPersonFlags renderer2 in Renderers)
			{
				switch (renderer2.FirstPersonFlag)
				{
				case FirstPersonFlag.FirstPersonOnly:
					setVisibility(renderer2.Renderer, firstPerson: false, thirdPerson: false);
					break;
				case FirstPersonFlag.Auto:
				case FirstPersonFlag.Both:
				case FirstPersonFlag.ThirdPersonOnly:
					setVisibility(renderer2.Renderer, firstPerson: true, thirdPerson: true);
					break;
				}
			}
		}

		public Mesh ProcessFirstPerson(Transform firstPersonBone, SkinnedMeshRenderer smr)
		{
			SetVisibilityFunc setVisibility = delegate
			{
			};
			return CreateHeadlessModel((Renderer)(object)smr, FirstPersonBone, setVisibility);
		}

		private void OnDestroy()
		{
			foreach (Mesh headlessMesh in m_headlessMeshes)
			{
				if ((Object)(object)headlessMesh != (Object)null)
				{
					Object.Destroy((Object)(object)headlessMesh);
				}
			}
			m_headlessMeshes.Clear();
		}
	}
	public class VRMFirstPersonCameraManager : MonoBehaviour
	{
		[Serializable]
		private class CameraWithRawImage
		{
			public Camera Camera;

			public RenderTexture Texture;

			public RawImage Image;
		}

		[SerializeField]
		private CameraWithRawImage m_topLeft;

		[SerializeField]
		private CameraWithRawImage m_topRight;

		[SerializeField]
		private CameraWithRawImage m_bottomRight;

		[SerializeField]
		[Header("Cameras")]
		private Camera m_firstPersonCamera;

		[Se

valheim_Data/Managed/VRM10.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using MToon;
using UniGLTF;
using UniGLTF.Extensions.VRMC_materials_hdr_emissiveMultiplier;
using UniGLTF.Extensions.VRMC_materials_mtoon;
using UniGLTF.Extensions.VRMC_node_constraint;
using UniGLTF.Extensions.VRMC_springBone;
using UniGLTF.Extensions.VRMC_vrm;
using UniGLTF.Extensions.VRMC_vrm_animation;
using UniGLTF.MeshUtility;
using UniGLTF.Utils;
using UniHumanoid;
using UniJSON;
using UniVRM10.FastSpringBones.Blittables;
using UniVRM10.FastSpringBones.System;
using UniVRM10.Migration;
using Unity.Burst;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Serialization;
using VRMShaders;
using VRMShaders.VRM10.MToon10.Runtime;
using VrmLib;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("VRM10.Tests")]
[assembly: InternalsVisibleTo("VRM10.Tests.PlayMode")]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[10197]
		{
			0, 0, 0, 1, 0, 0, 0, 61, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			92, 67, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 92, 67, 111, 110, 115, 116, 114, 97, 105,
			110, 116, 65, 120, 101, 115, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 68, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			92, 67, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 68, 101, 115, 116, 105, 110, 97, 116, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 66, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 67, 111, 109, 112, 111,
			110, 101, 110, 116, 115, 92, 67, 111, 110, 115,
			116, 114, 97, 105, 110, 116, 92, 67, 111, 110,
			115, 116, 82, 97, 105, 110, 116, 69, 120, 99,
			101, 112, 116, 105, 111, 110, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 63, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			92, 67, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 83, 111, 117, 114, 99, 101, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 63, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			92, 67, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 92, 73, 86, 114, 109, 49, 48, 67, 111,
			110, 115, 116, 114, 97, 105, 110, 116, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 49, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 67, 111, 110, 115, 116, 114, 97, 105,
			110, 116, 92, 84, 82, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 66, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 111, 110, 101, 110, 116, 115, 92, 67,
			111, 110, 115, 116, 114, 97, 105, 110, 116, 92,
			84, 114, 97, 110, 115, 102, 111, 114, 109, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 65,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 67, 111, 110, 115, 116, 114, 97,
			105, 110, 116, 92, 86, 114, 109, 49, 48, 65,
			105, 109, 67, 111, 110, 115, 116, 114, 97, 105,
			110, 116, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 66, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 67, 111, 109, 112, 111,
			110, 101, 110, 116, 115, 92, 67, 111, 110, 115,
			116, 114, 97, 105, 110, 116, 92, 86, 114, 109,
			49, 48, 67, 111, 110, 115, 116, 114, 97, 105,
			110, 116, 85, 116, 105, 108, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 66, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			92, 86, 114, 109, 49, 48, 82, 111, 108, 108,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			70, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 67, 111, 110, 115, 116, 114,
			97, 105, 110, 116, 92, 86, 114, 109, 49, 48,
			82, 111, 116, 97, 116, 105, 111, 110, 67, 111,
			110, 115, 116, 114, 97, 105, 110, 116, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 73, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 69, 120, 112, 114, 101, 115, 115, 105,
			111, 110, 92, 68, 101, 102, 97, 117, 108, 116,
			69, 120, 112, 114, 101, 115, 115, 105, 111, 110,
			86, 97, 108, 105, 100, 97, 116, 111, 114, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 60,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 69, 120, 112, 114, 101, 115, 115,
			105, 111, 110, 92, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 75, 101, 121, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 63, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			92, 69, 120, 112, 114, 101, 115, 115, 105, 111,
			110, 92, 69, 120, 112, 114, 101, 115, 115, 105,
			111, 110, 77, 101, 114, 103, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 67, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 69, 120, 112, 114, 101, 115, 115, 105,
			111, 110, 92, 73, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 86, 97, 108, 105, 100, 97,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 74, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 109, 112,
			111, 110, 101, 110, 116, 115, 92, 69, 120, 112,
			114, 101, 115, 115, 105, 111, 110, 92, 73, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 86,
			97, 108, 105, 100, 97, 116, 111, 114, 70, 97,
			99, 116, 111, 114, 121, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 76, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 111, 110, 101, 110, 116, 115, 92, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 92,
			73, 76, 111, 111, 107, 65, 116, 69, 121, 101,
			68, 105, 114, 101, 99, 116, 105, 111, 110, 65,
			112, 112, 108, 105, 99, 97, 98, 108, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 67,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 69, 120, 112, 114, 101, 115, 115,
			105, 111, 110, 92, 77, 97, 116, 101, 114, 105,
			97, 108, 67, 111, 108, 111, 114, 66, 105, 110,
			100, 105, 110, 103, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 64, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 69, 120,
			112, 114, 101, 115, 115, 105, 111, 110, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 85, 86, 66,
			105, 110, 100, 105, 110, 103, 46, 99, 115, 0,
			0, 0, 3, 0, 0, 0, 73, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			69, 120, 112, 114, 101, 115, 115, 105, 111, 110,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 86,
			97, 108, 117, 101, 66, 105, 110, 100, 105, 110,
			103, 77, 101, 114, 103, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 65, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			92, 69, 120, 112, 114, 101, 115, 115, 105, 111,
			110, 92, 77, 111, 114, 112, 104, 84, 97, 114,
			103, 101, 116, 66, 105, 110, 100, 105, 110, 103,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			96, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 92, 77, 111, 114, 112, 104,
			84, 97, 114, 103, 101, 116, 66, 105, 110, 100,
			105, 110, 103, 77, 101, 114, 103, 101, 114, 92,
			77, 111, 114, 112, 104, 84, 97, 114, 103, 101,
			116, 66, 105, 110, 100, 105, 110, 103, 77, 101,
			114, 103, 101, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 93, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 69, 120,
			112, 114, 101, 115, 115, 105, 111, 110, 92, 77,
			111, 114, 112, 104, 84, 97, 114, 103, 101, 116,
			66, 105, 110, 100, 105, 110, 103, 77, 101, 114,
			103, 101, 114, 92, 77, 111, 114, 112, 104, 84,
			97, 114, 103, 101, 116, 73, 100, 101, 110, 116,
			105, 102, 105, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 97, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 111, 110, 101, 110, 116, 115, 92, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 92,
			77, 111, 114, 112, 104, 84, 97, 114, 103, 101,
			116, 66, 105, 110, 100, 105, 110, 103, 77, 101,
			114, 103, 101, 114, 92, 82, 117, 110, 116, 105,
			109, 101, 77, 111, 114, 112, 104, 84, 97, 114,
			103, 101, 116, 66, 105, 110, 100, 105, 110, 103,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			70, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 92, 80, 114, 101, 118, 105,
			101, 119, 92, 80, 114, 101, 118, 105, 101, 119,
			77, 101, 115, 104, 73, 116, 101, 109, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 74, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 69, 120, 112, 114, 101, 115, 115, 105,
			111, 110, 92, 80, 114, 101, 118, 105, 101, 119,
			92, 80, 114, 101, 118, 105, 101, 119, 83, 99,
			101, 110, 101, 77, 97, 110, 97, 103, 101, 114,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			66, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 92, 80, 114, 101, 118, 105,
			101, 119, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 116, 101, 109, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 62, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 69, 120,
			112, 114, 101, 115, 115, 105, 111, 110, 92, 86,
			82, 77, 49, 48, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 72, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 70, 105,
			114, 115, 116, 80, 101, 114, 115, 111, 110, 92,
			82, 101, 110, 100, 101, 114, 101, 114, 70, 105,
			114, 115, 116, 80, 101, 114, 115, 111, 110, 70,
			108, 97, 103, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 77, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 70, 105,
			114, 115, 116, 80, 101, 114, 115, 111, 110, 92,
			86, 114, 109, 49, 48, 70, 105, 114, 115, 116,
			80, 101, 114, 115, 111, 110, 76, 97, 121, 101,
			114, 83, 101, 116, 116, 105, 110, 103, 115, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 54,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 76, 111, 111, 107, 65, 116, 92,
			67, 117, 114, 118, 101, 77, 97, 112, 112, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 70, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 67, 111, 109, 112, 111, 110,
			101, 110, 116, 115, 92, 76, 111, 111, 107, 65,
			116, 92, 73, 76, 111, 111, 107, 65, 116, 69,
			121, 101, 68, 105, 114, 101, 99, 116, 105, 111,
			110, 80, 114, 111, 118, 105, 100, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 61,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 76, 111, 111, 107, 65, 116, 92,
			76, 111, 111, 107, 65, 116, 69, 121, 101, 68,
			105, 114, 101, 99, 116, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 77, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 76, 111, 111, 107, 65, 116, 92, 76,
			111, 111, 107, 65, 116, 69, 121, 101, 68, 105,
			114, 101, 99, 116, 105, 111, 110, 65, 112, 112,
			108, 105, 99, 97, 98, 108, 101, 84, 111, 66,
			111, 110, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 83, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 109, 112,
			111, 110, 101, 110, 116, 115, 92, 76, 111, 111,
			107, 65, 116, 92, 76, 111, 111, 107, 65, 116,
			69, 121, 101, 68, 105, 114, 101, 99, 116, 105,
			111, 110, 65, 112, 112, 108, 105, 99, 97, 98,
			108, 101, 84, 111, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 54, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 76, 111,
			111, 107, 65, 116, 92, 76, 111, 111, 107, 65,
			116, 73, 110, 112, 117, 116, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 62, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			76, 111, 111, 107, 65, 116, 92, 77, 97, 116,
			114, 105, 120, 52, 120, 52, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 65, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			80, 114, 101, 102, 97, 98, 82, 101, 108, 97,
			116, 101, 100, 83, 99, 114, 105, 112, 116, 97,
			98, 108, 101, 79, 98, 106, 101, 99, 116, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 70,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 83, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 92, 86, 82, 77, 49, 48, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 67,
			111, 108, 108, 105, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 75, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			92, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 86, 82, 77, 49, 48, 83, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 67, 111, 108,
			108, 105, 100, 101, 114, 71, 114, 111, 117, 112,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			67, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 92, 86, 82, 77, 49, 48,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			74, 111, 105, 110, 116, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 65, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 111, 110, 101, 110, 116, 115, 92, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 92,
			86, 82, 77, 49, 48, 83, 112, 114, 105, 110,
			103, 85, 116, 105, 108, 105, 116, 121, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 63, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 86, 114, 109, 49, 48, 73, 110, 115,
			116, 97, 110, 99, 101, 92, 86, 114, 109, 49,
			48, 73, 110, 115, 116, 97, 110, 99, 101, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 73,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 86, 114, 109, 49, 48, 73, 110,
			115, 116, 97, 110, 99, 101, 92, 86, 114, 109,
			49, 48, 73, 110, 115, 116, 97, 110, 99, 101,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			59, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 86, 82, 77, 49, 48, 79,
			98, 106, 101, 99, 116, 92, 86, 82, 77, 49,
			48, 79, 98, 106, 101, 99, 116, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 69, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 115,
			92, 86, 82, 77, 49, 48, 79, 98, 106, 101,
			99, 116, 92, 86, 82, 77, 49, 48, 79, 98,
			106, 101, 99, 116, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 70, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 115, 92, 86, 82,
			77, 49, 48, 79, 98, 106, 101, 99, 116, 92,
			86, 82, 77, 49, 48, 79, 98, 106, 101, 99,
			116, 70, 105, 114, 115, 116, 80, 101, 114, 115,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 65, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 67, 111, 109, 112, 111,
			110, 101, 110, 116, 115, 92, 86, 82, 77, 49,
			48, 79, 98, 106, 101, 99, 116, 92, 86, 82,
			77, 49, 48, 79, 98, 106, 101, 99, 116, 76,
			111, 111, 107, 65, 116, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 63, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			109, 112, 111, 110, 101, 110, 116, 115, 92, 86,
			82, 77, 49, 48, 79, 98, 106, 101, 99, 116,
			92, 86, 82, 77, 49, 48, 79, 98, 106, 101,
			99, 116, 77, 101, 116, 97, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 76, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 115, 92,
			86, 114, 109, 49, 48, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 110, 116, 114, 111, 108,
			82, 105, 103, 92, 86, 114, 109, 49, 48, 67,
			111, 110, 116, 114, 111, 108, 66, 111, 110, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			82, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 86, 114, 109, 49, 48, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 110,
			116, 114, 111, 108, 82, 105, 103, 92, 86, 114,
			109, 49, 48, 82, 117, 110, 116, 105, 109, 101,
			67, 111, 110, 116, 114, 111, 108, 82, 105, 103,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			61, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 86, 114, 109, 49, 48, 82,
			117, 110, 116, 105, 109, 101, 92, 86, 114, 109,
			49, 48, 82, 117, 110, 116, 105, 109, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 71,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 115, 92, 86, 114, 109, 49, 48, 82, 117,
			110, 116, 105, 109, 101, 92, 86, 114, 109, 49,
			48, 82, 117, 110, 116, 105, 109, 101, 69, 120,
			112, 114, 101, 115, 115, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 67, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 109, 112, 111, 110, 101, 110, 116,
			115, 92, 86, 114, 109, 49, 48, 82, 117, 110,
			116, 105, 109, 101, 92, 86, 114, 109, 49, 48,
			82, 117, 110, 116, 105, 109, 101, 76, 111, 111,
			107, 65, 116, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 72, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 109, 112,
			111, 110, 101, 110, 116, 115, 92, 86, 114, 109,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 73,
			110, 115, 116, 97, 110, 99, 101, 92, 73, 86,
			114, 109, 49, 48, 65, 110, 105, 109, 97, 116,
			105, 111, 110, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 79, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 109, 112,
			111, 110, 101, 110, 116, 115, 92, 86, 114, 109,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 73,
			110, 115, 116, 97, 110, 99, 101, 92, 86, 114,
			109, 49, 48, 65, 110, 105, 109, 97, 116, 105,
			111, 110, 73, 110, 115, 116, 97, 110, 99, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			72, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 86, 114, 109, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 73, 110, 115, 116,
			97, 110, 99, 101, 92, 86, 114, 109, 49, 48,
			80, 111, 115, 101, 76, 111, 97, 100, 101, 114,
			46, 99, 115, 0, 0, 0, 3, 0, 0, 0,
			67, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 109, 112, 111, 110, 101,
			110, 116, 115, 92, 86, 114, 109, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 73, 110, 115, 116,
			97, 110, 99, 101, 92, 86, 114, 109, 49, 48,
			84, 80, 111, 115, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 56, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
			110, 116, 114, 111, 108, 82, 105, 103, 92, 65,
			110, 105, 109, 97, 116, 111, 114, 80, 111, 115,
			101, 80, 114, 111, 118, 105, 100, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 55,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 67, 111, 110, 116, 114, 111, 108, 82,
			105, 103, 92, 66, 111, 110, 101, 73, 110, 105,
			116, 105, 97, 108, 82, 111, 116, 97, 116, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 63, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 67, 111, 110, 116, 114,
			111, 108, 82, 105, 103, 92, 73, 110, 105, 116,
			105, 97, 108, 82, 111, 116, 97, 116, 105, 111,
			110, 80, 111, 115, 101, 80, 114, 111, 118, 105,
			100, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 73, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 110, 116,
			114, 111, 108, 82, 105, 103, 92, 73, 110, 105,
			116, 105, 97, 108, 82, 111, 116, 97, 116, 105,
			111, 110, 115, 92, 88, 82, 95, 69, 88, 84,
			95, 104, 97, 110, 100, 95, 116, 114, 97, 99,
			107, 105, 110, 103, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 72, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 110,
			116, 114, 111, 108, 82, 105, 103, 92, 73, 110,
			105, 116, 105, 97, 108, 82, 111, 116, 97, 116,
			105, 111, 110, 115, 92, 88, 82, 95, 70, 66,
			95, 98, 111, 100, 121, 95, 116, 114, 97, 99,
			107, 105, 110, 103, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 61, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 110,
			116, 114, 111, 108, 82, 105, 103, 92, 73, 78,
			111, 114, 109, 97, 108, 105, 122, 101, 100, 80,
			111, 115, 101, 65, 112, 112, 108, 105, 99, 97,
			98, 108, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 59, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 67, 111, 110, 116,
			114, 111, 108, 82, 105, 103, 92, 73, 78, 111,
			114, 109, 97, 108, 105, 122, 101, 100, 80, 111,
			115, 101, 80, 114, 111, 118, 105, 100, 101, 114,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			50, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 111, 110, 116, 114, 111, 108,
			82, 105, 103, 92, 73, 84, 80, 111, 115, 101,
			80, 114, 111, 118, 105, 100, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 49, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 67, 111, 110, 116, 114, 111, 108, 82, 105,
			103, 92, 86, 114, 109, 49, 48, 82, 101, 116,
			97, 114, 103, 101, 116, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 43, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 69, 110,
			117, 109, 70, 108, 97, 103, 115, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 56, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			111, 114, 109, 97, 116, 92, 65, 110, 105, 109,
			97, 116, 105, 111, 110, 92, 68, 101, 115, 101,
			114, 105, 97, 108, 105, 122, 101, 114, 46, 103,
			46, 99, 115, 0, 0, 0, 8, 0, 0, 0,
			50, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 111, 114, 109, 97, 116, 92,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 92,
			70, 111, 114, 109, 97, 116, 46, 103, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 54, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 111, 114, 109, 97, 116, 92, 65, 110,
			105, 109, 97, 116, 105, 111, 110, 92, 83, 101,
			114, 105, 97, 108, 105, 122, 101, 114, 46, 103,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			58, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 111, 114, 109, 97, 116, 92,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			115, 92, 68, 101, 115, 101, 114, 105, 97, 108,
			105, 122, 101, 114, 46, 103, 46, 99, 115, 0,
			0, 0, 5, 0, 0, 0, 52, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			111, 114, 109, 97, 116, 92, 67, 111, 110, 115,
			116, 114, 97, 105, 110, 116, 115, 92, 70, 111,
			114, 109, 97, 116, 46, 103, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 56, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			111, 114, 109, 97, 116, 92, 67, 111, 110, 115,
			116, 114, 97, 105, 110, 116, 115, 92, 83, 101,
			114, 105, 97, 108, 105, 122, 101, 114, 46, 103,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			61, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 111, 114, 109, 97, 116, 92,
			77, 97, 116, 101, 114, 105, 97, 108, 115, 77,
			84, 111, 111, 110, 92, 68, 101, 115, 101, 114,
			105, 97, 108, 105, 122, 101, 114, 46, 103, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 59,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 111, 114, 109, 97, 116, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 115, 77, 84,
			111, 111, 110, 92, 83, 101, 114, 105, 97, 108,
			105, 122, 101, 114, 46, 103, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 57, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			111, 114, 109, 97, 116, 92, 83, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 92, 68, 101, 115,
			101, 114, 105, 97, 108, 105, 122, 101, 114, 46,
			103, 46, 99, 115, 0, 0, 0, 8, 0, 0,
			0, 51, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 111, 114, 109, 97, 116,
			92, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 92, 70, 111, 114, 109, 97, 116, 46, 103,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			55, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 111, 114, 109, 97, 116, 92,
			83, 112, 114, 105, 110, 103, 66, 111, 110, 101,
			92, 83, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 46, 103, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 50, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 111, 114, 109,
			97, 116, 92, 86, 114, 109, 92, 68, 101, 115,
			101, 114, 105, 97, 108, 105, 122, 101, 114, 46,
			103, 46, 99, 115, 0, 0, 0, 15, 0, 0,
			0, 44, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 111, 114, 109, 97, 116,
			92, 86, 114, 109, 92, 70, 111, 114, 109, 97,
			116, 46, 103, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 48, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 111, 114, 109,
			97, 116, 92, 86, 114, 109, 92, 83, 101, 114,
			105, 97, 108, 105, 122, 101, 114, 46, 103, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 75,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 111, 114, 109, 97, 116, 92, 86,
			114, 109, 72, 117, 109, 97, 110, 111, 105, 100,
			66, 111, 110, 101, 115, 92, 86, 114, 109, 49,
			48, 72, 117, 109, 97, 110, 111, 105, 100, 66,
			111, 110, 101, 65, 116, 116, 114, 105, 98, 117,
			116, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 79, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 111, 114, 109, 97,
			116, 92, 86, 114, 109, 72, 117, 109, 97, 110,
			111, 105, 100, 66, 111, 110, 101, 115, 92, 86,
			114, 109, 49, 48, 72, 117, 109, 97, 110, 111,
			105, 100, 66, 111, 110, 101, 83, 112, 101, 99,
			105, 102, 105, 99, 97, 116, 105, 111, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 43,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 79, 92, 65, 114, 114, 97, 121,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			48, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 79, 92, 69, 120, 112, 114,
			101, 115, 115, 105, 111, 110, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 43, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			79, 92, 73, 110, 100, 101, 120, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 82, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 92, 66, 117, 105, 108, 116, 73, 110, 82,
			80, 92, 69, 120, 112, 111, 114, 116, 92, 66,
			117, 105, 108, 116, 73, 110, 86, 114, 109, 49,
			48, 77, 97, 116, 101, 114, 105, 97, 108, 69,
			120, 112, 111, 114, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 97, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 92, 66, 117, 105, 108, 116, 73, 110, 82,
			80, 92, 69, 120, 112, 111, 114, 116, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 115, 92, 66,
			117, 105, 108, 116, 73, 110, 86, 114, 109, 49,
			48, 77, 84, 111, 111, 110, 77, 97, 116, 101,
			114, 105, 97, 108, 69, 120, 112, 111, 114, 116,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 93, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 79, 92, 77, 97,
			116, 101, 114, 105, 97, 108, 92, 66, 117, 105,
			108, 116, 73, 110, 82, 80, 92, 73, 109, 112,
			111, 114, 116, 92, 66, 117, 105, 108, 116, 73,
			110, 86, 114, 109, 49, 48, 77, 97, 116, 101,
			114, 105, 97, 108, 68, 101, 115, 99, 114, 105,
			112, 116, 111, 114, 71, 101, 110, 101, 114, 97,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 97, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 79, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 92, 66, 117,
			105, 108, 116, 73, 110, 82, 80, 92, 73, 109,
			112, 111, 114, 116, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 92, 66, 117, 105, 108, 116,
			73, 110, 86, 114, 109, 49, 48, 77, 84, 111,
			111, 110, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 109, 112, 111, 114, 116, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 87, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 79, 92, 77, 97, 116, 101, 114, 105,
			97, 108, 92, 85, 82, 80, 92, 73, 109, 112,
			111, 114, 116, 92, 77, 97, 116, 101, 114, 105,
			97, 108, 115, 92, 85, 114, 112, 86, 114, 109,
			49, 48, 77, 84, 111, 111, 110, 77, 97, 116,
			101, 114, 105, 97, 108, 73, 109, 112, 111, 114,
			116, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 83, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 79, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 92, 85, 82,
			80, 92, 73, 109, 112, 111, 114, 116, 92, 85,
			114, 112, 86, 114, 109, 49, 48, 77, 97, 116,
			101, 114, 105, 97, 108, 68, 101, 115, 99, 114,
			105, 112, 116, 111, 114, 71, 101, 110, 101, 114,
			97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 101, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 79, 92,
			77, 97, 116, 101, 114, 105, 97, 108, 92, 85,
			82, 80, 92, 73, 109, 112, 111, 114, 116, 92,
			86, 82, 77, 49, 48, 82, 101, 110, 100, 101,
			114, 80, 105, 112, 101, 108, 105, 110, 101, 77,
			97, 116, 101, 114, 105, 97, 108, 68, 101, 115,
			99, 114, 105, 112, 116, 111, 114, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 85, 116, 105, 108,
			105, 116, 121, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 61, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 79, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 92, 86, 114,
			109, 49, 48, 77, 97, 116, 101, 114, 105, 97,
			108, 69, 120, 112, 111, 114, 116, 85, 116, 105,
			108, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 41, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 79, 92, 77, 105,
			103, 114, 97, 116, 105, 111, 110, 68, 97, 116,
			97, 46, 99, 115, 0, 0, 0, 5, 0, 0,
			0, 48, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 79, 92, 77, 111, 100,
			101, 108, 92, 67, 111, 112, 121, 73, 110, 100,
			105, 99, 101, 115, 74, 111, 98, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 59, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 77, 111, 100, 101, 108, 92, 73,
			110, 116, 101, 114, 108, 101, 97, 118, 101, 77,
			101, 115, 104, 86, 101, 114, 116, 105, 99, 101,
			115, 74, 111, 98, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 53, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 79, 92,
			77, 111, 100, 101, 108, 92, 77, 101, 115, 104,
			73, 109, 112, 111, 114, 116, 101, 114, 68, 105,
			118, 105, 100, 101, 100, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 52, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 77, 111, 100, 101, 108, 92, 77, 101, 115,
			104, 73, 109, 112, 111, 114, 116, 101, 114, 83,
			104, 97, 114, 101, 100, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 44, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 77, 111, 100, 101, 108, 92, 77, 101, 115,
			104, 82, 101, 97, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 45, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 77, 111, 100, 101, 108, 92, 77,
			101, 115, 104, 86, 101, 114, 116, 101, 120, 48,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			45, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 79, 92, 77, 111, 100, 101,
			108, 92, 77, 101, 115, 104, 86, 101, 114, 116,
			101, 120, 49, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 45, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 79, 92, 77,
			111, 100, 101, 108, 92, 77, 101, 115, 104, 86,
			101, 114, 116, 101, 120, 50, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 51, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			79, 92, 77, 111, 100, 101, 108, 92, 77, 101,
			115, 104, 86, 101, 114, 116, 101, 120, 85, 116,
			105, 108, 105, 116, 121, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 44, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 77, 111, 100, 101, 108, 92, 77, 101, 115,
			104, 87, 114, 105, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 47, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 79, 92, 77, 111, 100, 101, 108, 92, 77,
			111, 100, 101, 108, 69, 120, 112, 111, 114, 116,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 45, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 79, 92, 77, 111,
			100, 101, 108, 92, 77, 111, 100, 101, 108, 82,
			101, 97, 100, 101, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 61, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 84, 101, 120, 116, 117, 114, 101, 92, 86,
			114, 109, 49, 48, 77, 84, 111, 111, 110, 84,
			101, 120, 116, 117, 114, 101, 73, 109, 112, 111,
			114, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 67, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 79, 92,
			84, 101, 120, 116, 117, 114, 101, 92, 86, 114,
			109, 49, 48, 84, 101, 120, 116, 117, 114, 101,
			68, 101, 115, 99, 114, 105, 112, 116, 111, 114,
			71, 101, 110, 101, 114, 97, 116, 111, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 42,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 79, 92, 85, 110, 105, 116, 121,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 33,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 79, 92, 86, 114, 109, 49, 48,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			37, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 79, 92, 86, 114, 109, 49,
			48, 68, 97, 116, 97, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 42, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 86, 114, 109, 49, 48, 69, 120, 99, 101,
			112, 116, 105, 111, 110, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 41, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 86, 114, 109, 49, 48, 69, 120, 112, 111,
			114, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 43, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 79, 92,
			86, 114, 109, 49, 48, 73, 109, 112, 111, 114,
			116, 68, 97, 116, 97, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 41, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 79,
			92, 86, 114, 109, 49, 48, 73, 109, 112, 111,
			114, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			3, 0, 0, 0, 48, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 79, 92,
			86, 114, 109, 65, 110, 105, 109, 97, 116, 105,
			111, 110, 69, 120, 112, 111, 114, 116, 101, 114,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			48, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 79, 92, 86, 114, 109, 65,
			110, 105, 109, 97, 116, 105, 111, 110, 73, 109,
			112, 111, 114, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 44, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			79, 92, 86, 114, 109, 65, 110, 105, 109, 97,
			116, 105, 111, 110, 85, 116, 105, 108, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 53, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 77, 101, 115, 104, 85, 116, 105, 108, 105,
			116, 121, 92, 86, 114, 109, 49, 48, 77, 101,
			115, 104, 85, 116, 105, 108, 105, 116, 121, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 73,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			115, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 76, 101, 103, 97, 99, 121, 85, 110, 108,
			105, 116, 77, 97, 116, 101, 114, 105, 97, 108,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			66, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 92, 77, 97, 116, 101, 114, 105, 97,
			108, 115, 92, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 77, 97, 116, 101, 114, 105, 97, 108,
			85, 116, 105, 108, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 67, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 115, 92, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 77, 84, 111, 111,
			110, 77, 97, 116, 101, 114, 105, 97, 108, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 65,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			115, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 80, 98, 114, 77, 97, 116, 101, 114, 105,
			97, 108, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 84, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 85, 110, 108, 105, 116, 84,
			114, 97, 110, 115, 112, 97, 114, 101, 110, 116,
			90, 87, 114, 105, 116, 101, 77, 97, 116, 101,
			114, 105, 97, 108, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 70, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 115, 92, 86, 114, 109,
			48, 88, 77, 84, 111, 111, 110, 84, 101, 120,
			116, 117, 114, 101, 73, 110, 100, 101, 120, 77,
			97, 112, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 60, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 92, 77, 97, 116, 101, 114,
			105, 97, 108, 115, 92, 86, 114, 109, 48, 88,
			77, 84, 111, 111, 110, 86, 97, 108, 117, 101,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			46, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 92, 77, 101, 115, 104, 85, 112, 100,
			97, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 49, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 92, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 67, 104, 101, 99,
			107, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 53, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 77, 105, 103, 114, 97, 116,
			105, 111, 110, 92, 77, 105, 103, 114, 97, 116,
			105, 111, 110, 69, 120, 99, 101, 112, 116, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 53, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 77, 97, 116, 101, 114, 105,
			97, 108, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 51, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 77, 105, 103, 114,
			97, 116, 105, 111, 110, 92, 77, 105, 103, 114,
			97, 116, 105, 111, 110, 86, 101, 99, 116, 111,
			114, 51, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 47, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 86, 114, 109, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 57, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			77, 105, 103, 114, 97, 116, 105, 111, 110, 92,
			77, 105, 103, 114, 97, 116, 105, 111, 110, 86,
			114, 109, 69, 120, 112, 114, 101, 115, 115, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 67, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 92, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 86, 114, 109, 70, 105, 114,
			115, 116, 80, 101, 114, 115, 111, 110, 65, 110,
			100, 76, 111, 111, 107, 65, 116, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 55, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			77, 105, 103, 114, 97, 116, 105, 111, 110, 92,
			77, 105, 103, 114, 97, 116, 105, 111, 110, 86,
			114, 109, 72, 117, 109, 97, 110, 111, 105, 100,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			51, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 92, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 86, 114, 109, 77, 101, 116, 97, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 57,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 86, 114, 109, 83, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 43, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 92, 77, 105, 103,
			114, 97, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 45, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 77, 105,
			103, 114, 97, 116, 105, 111, 110, 92, 82, 111,
			116, 97, 116, 101, 89, 49, 56, 48, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 43, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 77, 105, 103, 114, 97, 116, 105, 111, 110,
			92, 86, 114, 109, 48, 77, 101, 116, 97, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 47,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 92, 86, 114, 109, 48, 88, 86, 101, 114,
			115, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 38, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 83, 99, 101,
			110, 101, 115, 92, 83, 97, 109, 112, 108, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			41, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 83, 116, 114, 105, 110, 103, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			99, 115, 0, 0, 0, 3, 0, 0, 0, 40,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 116, 121, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 47, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			86, 101, 114, 115, 105, 111, 110, 92, 86, 82,
			77, 83, 112, 101, 99, 86, 101, 114, 115, 105,
			111, 110, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 54, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 86, 101, 114, 115, 105,
			111, 110, 92, 86, 82, 77, 83, 112, 101, 99,
			86, 101, 114, 115, 105, 111, 110, 80, 97, 114,
			116, 105, 97, 108, 46, 99, 115
		};
		result.TypesData = new byte[8026]
		{
			0, 0, 0, 0, 27, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 65, 120, 101, 115, 77, 97,
			115, 107, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 30, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 67, 111, 110, 115,
			116, 114, 97, 105, 110, 116, 68, 101, 115, 116,
			105, 110, 97, 116, 105, 111, 110, 0, 0, 0,
			0, 28, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 67, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 69, 120, 99, 101, 112, 116, 105, 111, 110,
			0, 0, 0, 0, 25, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 67, 111, 110, 115, 116, 114,
			97, 105, 110, 116, 83, 111, 117, 114, 99, 101,
			0, 0, 0, 0, 25, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 73, 86, 114, 109, 49, 48,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			0, 0, 0, 0, 11, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 84, 82, 0, 0, 0, 0,
			28, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			84, 114, 97, 110, 115, 102, 111, 114, 109, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 27, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 86, 114, 109, 49, 48, 65, 105,
			109, 67, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 0, 0, 0, 0, 28, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 86, 114, 109, 49, 48,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			85, 116, 105, 108, 0, 0, 0, 0, 28, 85,
			110, 105, 86, 82, 77, 49, 48, 124, 86, 114,
			109, 49, 48, 82, 111, 108, 108, 67, 111, 110,
			115, 116, 114, 97, 105, 110, 116, 0, 0, 0,
			0, 32, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 86, 114, 109, 49, 48, 82, 111, 116, 97,
			116, 105, 111, 110, 67, 111, 110, 115, 116, 114,
			97, 105, 110, 116, 0, 0, 0, 0, 35, 85,
			110, 105, 86, 82, 77, 49, 48, 124, 68, 101,
			102, 97, 117, 108, 116, 69, 120, 112, 114, 101,
			115, 115, 105, 111, 110, 86, 97, 108, 105, 100,
			97, 116, 111, 114, 0, 0, 0, 0, 43, 85,
			110, 105, 86, 82, 77, 49, 48, 46, 68, 101,
			102, 97, 117, 108, 116, 69, 120, 112, 114, 101,
			115, 115, 105, 111, 110, 86, 97, 108, 105, 100,
			97, 116, 111, 114, 124, 70, 97, 99, 116, 111,
			114, 121, 0, 0, 0, 0, 22, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 69, 120, 112, 114,
			101, 115, 115, 105, 111, 110, 75, 101, 121, 1,
			0, 0, 0, 26, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 124, 69, 113, 117, 97, 108, 105,
			116, 121, 67, 111, 109, 112, 97, 114, 101, 114,
			0, 0, 0, 0, 25, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 77, 101, 114, 103, 101, 114,
			0, 0, 0, 0, 29, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 73, 69, 120, 112, 114, 101,
			115, 115, 105, 111, 110, 86, 97, 108, 105, 100,
			97, 116, 111, 114, 0, 0, 0, 0, 36, 85,
			110, 105, 86, 82, 77, 49, 48, 124, 73, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 86,
			97, 108, 105, 100, 97, 116, 111, 114, 70, 97,
			99, 116, 111, 114, 121, 0, 0, 0, 0, 38,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 73,
			76, 111, 111, 107, 65, 116, 69, 121, 101, 68,
			105, 114, 101, 99, 116, 105, 111, 110, 65, 112,
			112, 108, 105, 99, 97, 98, 108, 101, 0, 0,
			0, 0, 29, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 77, 97, 116, 101, 114, 105, 97, 108,
			67, 111, 108, 111, 114, 66, 105, 110, 100, 105,
			110, 103, 0, 0, 0, 0, 26, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 77, 97, 116, 101,
			114, 105, 97, 108, 85, 86, 66, 105, 110, 100,
			105, 110, 103, 0, 0, 0, 0, 35, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 77, 97, 116,
			101, 114, 105, 97, 108, 86, 97, 108, 117, 101,
			66, 105, 110, 100, 105, 110, 103, 77, 101, 114,
			103, 101, 114, 0, 0, 0, 0, 77, 85, 110,
			105, 86, 82, 77, 49, 48, 46, 77, 97, 116,
			101, 114, 105, 97, 108, 86, 97, 108, 117, 101,
			66, 105, 110, 100, 105, 110, 103, 77, 101, 114,
			103, 101, 114, 124, 68, 105, 99, 116, 105, 111,
			110, 97, 114, 121, 75, 101, 121, 77, 97, 116,
			101, 114, 105, 97, 108, 86, 97, 108, 117, 101,
			66, 105, 110, 100, 105, 110, 103, 67, 111, 109,
			112, 97, 114, 101, 114, 0, 0, 0, 0, 50,
			85, 110, 105, 86, 82, 77, 49, 48, 46, 77,
			97, 116, 101, 114, 105, 97, 108, 86, 97, 108,
			117, 101, 66, 105, 110, 100, 105, 110, 103, 77,
			101, 114, 103, 101, 114, 124, 77, 97, 116, 101,
			114, 105, 97, 108, 84, 97, 114, 103, 101, 116,
			0, 0, 0, 0, 27, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 77, 111, 114, 112, 104, 84,
			97, 114, 103, 101, 116, 66, 105, 110, 100, 105,
			110, 103, 0, 0, 0, 0, 33, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 77, 111, 114, 112,
			104, 84, 97, 114, 103, 101, 116, 66, 105, 110,
			100, 105, 110, 103, 77, 101, 114, 103, 101, 114,
			0, 0, 0, 0, 30, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 77, 111, 114, 112, 104, 84,
			97, 114, 103, 101, 116, 73, 100, 101, 110, 116,
			105, 102, 105, 101, 114, 1, 0, 0, 0, 26,
			85, 110, 105, 86, 82, 77, 49, 48, 46, 124,
			69, 113, 117, 97, 108, 105, 116, 121, 67, 111,
			109, 112, 97, 114, 101, 114, 0, 0, 0, 0,
			34, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			82, 117, 110, 116, 105, 109, 101, 77, 111, 114,
			112, 104, 84, 97, 114, 103, 101, 116, 66, 105,
			110, 100, 105, 110, 103, 0, 0, 0, 0, 24,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 80,
			114, 101, 118, 105, 101, 119, 77, 101, 115, 104,
			73, 116, 101, 109, 0, 0, 0, 0, 28, 85,
			110, 105, 86, 82, 77, 49, 48, 124, 80, 114,
			101, 118, 105, 101, 119, 83, 99, 101, 110, 101,
			77, 97, 110, 97, 103, 101, 114, 0, 0, 0,
			0, 17, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 80, 114, 111, 112, 73, 116, 101, 109, 0,
			0, 0, 0, 28, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 80, 114, 101, 118, 105, 101, 119,
			77, 97, 116, 101, 114, 105, 97, 108, 73, 116,
			101, 109, 0, 0, 0, 0, 24, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 82, 77, 49,
			48, 69, 120, 112, 114, 101, 115, 115, 105, 111,
			110, 0, 0, 0, 0, 33, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 82, 101, 110, 100, 101,
			114, 101, 114, 70, 105, 114, 115, 116, 80, 101,
			114, 115, 111, 110, 70, 108, 97, 103, 115, 0,
			0, 0, 0, 38, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 86, 114, 109, 49, 48, 70, 105,
			114, 115, 116, 80, 101, 114, 115, 111, 110, 76,
			97, 121, 101, 114, 83, 101, 116, 116, 105, 110,
			103, 115, 0, 0, 0, 0, 20, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 67, 117, 114, 118,
			101, 77, 97, 112, 112, 101, 114, 0, 0, 0,
			0, 36, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 73, 76, 111, 111, 107, 65, 116, 69, 121,
			101, 68, 105, 114, 101, 99, 116, 105, 111, 110,
			80, 114, 111, 118, 105, 100, 101, 114, 0, 0,
			0, 0, 27, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 76, 111, 111, 107, 65, 116, 69, 121,
			101, 68, 105, 114, 101, 99, 116, 105, 111, 110,
			0, 0, 0, 0, 43, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 76, 111, 111, 107, 65, 116,
			69, 121, 101, 68, 105, 114, 101, 99, 116, 105,
			111, 110, 65, 112, 112, 108, 105, 99, 97, 98,
			108, 101, 84, 111, 66, 111, 110, 101, 0, 0,
			0, 0, 49, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 76, 111, 111, 107, 65, 116, 69, 121,
			101, 68, 105, 114, 101, 99, 116, 105, 111, 110,
			65, 112, 112, 108, 105, 99, 97, 98, 108, 101,
			84, 111, 69, 120, 112, 114, 101, 115, 115, 105,
			111, 110, 0, 0, 0, 0, 20, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 76, 111, 111, 107,
			65, 116, 73, 110, 112, 117, 116, 0, 0, 0,
			0, 28, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 77, 97, 116, 114, 105, 120, 52, 120, 52,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 38, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 80, 114, 101, 102, 97, 98,
			82, 101, 108, 97, 116, 101, 100, 83, 99, 114,
			105, 112, 116, 97, 98, 108, 101, 79, 98, 106,
			101, 99, 116, 0, 0, 0, 0, 32, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 86, 82, 77,
			49, 48, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 67, 111, 108, 108, 105, 100, 101, 114,
			0, 0, 0, 0, 37, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 86, 82, 77, 49, 48, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 67,
			111, 108, 108, 105, 100, 101, 114, 71, 114, 111,
			117, 112, 0, 0, 0, 0, 29, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 82, 77, 49,
			48, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 74, 111, 105, 110, 116, 0, 0, 0, 0,
			27, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			86, 82, 77, 49, 48, 83, 112, 114, 105, 110,
			103, 85, 116, 105, 108, 105, 116, 121, 0, 0,
			0, 0, 22, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 49, 48, 73, 110, 115,
			116, 97, 110, 99, 101, 0, 0, 0, 0, 32,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 86,
			114, 109, 49, 48, 73, 110, 115, 116, 97, 110,
			99, 101, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 0, 0, 0, 0, 39, 85, 110, 105,
			86, 82, 77, 49, 48, 46, 86, 114, 109, 49,
			48, 73, 110, 115, 116, 97, 110, 99, 101, 83,
			112, 114, 105, 110, 103, 66, 111, 110, 101, 124,
			83, 112, 114, 105, 110, 103, 0, 0, 0, 0,
			20, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			86, 82, 77, 49, 48, 79, 98, 106, 101, 99,
			116, 0, 0, 0, 0, 30, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 86, 82, 77, 49, 48,
			79, 98, 106, 101, 99, 116, 69, 120, 112, 114,
			101, 115, 115, 105, 111, 110, 0, 0, 0, 0,
			31, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			86, 82, 77, 49, 48, 79, 98, 106, 101, 99,
			116, 70, 105, 114, 115, 116, 80, 101, 114, 115,
			111, 110, 0, 0, 0, 0, 26, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 82, 77, 49,
			48, 79, 98, 106, 101, 99, 116, 76, 111, 111,
			107, 65, 116, 0, 0, 0, 0, 24, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 86, 82, 77,
			49, 48, 79, 98, 106, 101, 99, 116, 77, 101,
			116, 97, 0, 0, 0, 0, 25, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 114, 109, 49,
			48, 67, 111, 110, 116, 114, 111, 108, 66, 111,
			110, 101, 0, 0, 0, 0, 31, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 114, 109, 49,
			48, 82, 117, 110, 116, 105, 109, 101, 67, 111,
			110, 116, 114, 111, 108, 82, 105, 103, 0, 0,
			0, 0, 21, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 49, 48, 82, 117, 110,
			116, 105, 109, 101, 0, 0, 0, 0, 31, 85,
			110, 105, 86, 82, 77, 49, 48, 124, 86, 114,
			109, 49, 48, 82, 117, 110, 116, 105, 109, 101,
			69, 120, 112, 114, 101, 115, 115, 105, 111, 110,
			0, 0, 0, 0, 27, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 86, 114, 109, 49, 48, 82,
			117, 110, 116, 105, 109, 101, 76, 111, 111, 107,
			65, 116, 0, 0, 0, 0, 24, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 73, 86, 114, 109,
			49, 48, 65, 110, 105, 109, 97, 116, 105, 111,
			110, 0, 0, 0, 0, 31, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 86, 114, 109, 49, 48,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 73,
			110, 115, 116, 97, 110, 99, 101, 0, 0, 0,
			0, 24, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 86, 114, 109, 49, 48, 80, 111, 115, 101,
			76, 111, 97, 100, 101, 114, 0, 0, 0, 0,
			19, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			86, 114, 109, 49, 48, 84, 80, 111, 115, 101,
			0, 0, 0, 0, 30, 85, 110, 105, 86, 82,
			77, 49, 48, 46, 86, 114, 109, 49, 48, 84,
			80, 111, 115, 101, 124, 78, 111, 82, 111, 116,
			97, 116, 105, 111, 110, 0, 0, 0, 0, 28,
			85, 110, 105, 86, 82, 77, 49, 48, 46, 86,
			114, 109, 49, 48, 84, 80, 111, 115, 101, 124,
			83, 107, 101, 108, 101, 116, 111, 110, 0, 0,
			0, 0, 29, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 65, 110, 105, 109, 97, 116, 111, 114,
			80, 111, 115, 101, 80, 114, 111, 118, 105, 100,
			101, 114, 0, 0, 0, 0, 28, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 66, 111, 110, 101,
			73, 110, 105, 116, 105, 97, 108, 82, 111, 116,
			97, 116, 105, 111, 110, 0, 0, 0, 0, 33,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 73,
			110, 105, 116, 82, 111, 116, 97, 116, 105, 111,
			110, 80, 111, 115, 101, 80, 114, 111, 118, 105,
			100, 101, 114, 0, 0, 0, 0, 29, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 88, 82, 95,
			69, 88, 84, 95, 104, 97, 110, 100, 95, 116,
			114, 97, 99, 107, 105, 110, 103, 0, 0, 0,
			0, 28, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 88, 82, 95, 70, 66, 95, 98, 111, 100,
			121, 95, 116, 114, 97, 99, 107, 105, 110, 103,
			0, 0, 0, 0, 34, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 73, 78, 111, 114, 109, 97,
			108, 105, 122, 101, 100, 80, 111, 115, 101, 65,
			112, 112, 108, 105, 99, 97, 98, 108, 101, 0,
			0, 0, 0, 32, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 73, 78, 111, 114, 109, 97, 108,
			105, 122, 101, 100, 80, 111, 115, 101, 80, 114,
			111, 118, 105, 100, 101, 114, 0, 0, 0, 0,
			23, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			73, 84, 80, 111, 115, 101, 80, 114, 111, 118,
			105, 100, 101, 114, 0, 0, 0, 0, 33, 85,
			110, 105, 86, 82, 77, 49, 48, 124, 73, 84,
			80, 111, 115, 101, 80, 114, 111, 118, 105, 100,
			101, 114, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 22, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 114, 109, 49,
			48, 82, 101, 116, 97, 114, 103, 101, 116, 0,
			0, 0, 0, 27, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 69, 110, 117, 109, 70, 108, 97,
			103, 115, 65, 116, 116, 114, 105, 98, 117, 116,
			101, 0, 0, 0, 0, 54, 85, 110, 105, 71,
			76, 84, 70, 46, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 86, 82, 77, 67, 95,
			118, 114, 109, 95, 97, 110, 105, 109, 97, 116,
			105, 111, 110, 124, 71, 108, 116, 102, 68, 101,
			115, 101, 114, 105, 97, 108, 105, 122, 101, 114,
			0, 0, 0, 0, 47, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 118,
			114, 109, 95, 97, 110, 105, 109, 97, 116, 105,
			111, 110, 124, 72, 117, 109, 97, 110, 66, 111,
			110, 101, 0, 0, 0, 0, 48, 85, 110, 105,
			71, 76, 84, 70, 46, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 86, 82, 77, 67,
			95, 118, 114, 109, 95, 97, 110, 105, 109, 97,
			116, 105, 111, 110, 124, 72, 117, 109, 97, 110,
			66, 111, 110, 101, 115, 0, 0, 0, 0, 46,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 118, 114, 109, 95, 97, 110,
			105, 109, 97, 116, 105, 111, 110, 124, 72, 117,
			109, 97, 110, 111, 105, 100, 0, 0, 0, 0,
			48, 85, 110, 105, 71, 76, 84, 70, 46, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			86, 82, 77, 67, 95, 118, 114, 109, 95, 97,
			110, 105, 109, 97, 116, 105, 111, 110, 124, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 0,
			0, 0, 0, 44, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 118, 114,
			109, 95, 97, 110, 105, 109, 97, 116, 105, 111,
			110, 124, 80, 114, 101, 115, 101, 116, 0, 0,
			0, 0, 49, 85, 110, 105, 71, 76, 84, 70,
			46, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 86, 82, 77, 67, 95, 118, 114, 109,
			95, 97, 110, 105, 109, 97, 116, 105, 111, 110,
			124, 69, 120, 112, 114, 101, 115, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 44, 85, 110, 105,
			71, 76, 84, 70, 46, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 86, 82, 77, 67,
			95, 118, 114, 109, 95, 97, 110, 105, 109, 97,
			116, 105, 111, 110, 124, 76, 111, 111, 107, 65,
			116, 0, 0, 0, 0, 56, 85, 110, 105, 71,
			76, 84, 70, 46, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 86, 82, 77, 67, 95,
			118, 114, 109, 95, 97, 110, 105, 109, 97, 116,
			105, 111, 110, 124, 86, 82, 77, 67, 95, 118,
			114, 109, 95, 97, 110, 105, 109, 97, 116, 105,
			111, 110, 0, 0, 0, 0, 52, 85, 110, 105,
			71, 76, 84, 70, 46, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 86, 82, 77, 67,
			95, 118, 114, 109, 95, 97, 110, 105, 109, 97,
			116, 105, 111, 110, 124, 71, 108, 116, 102, 83,
			101, 114, 105, 97, 108, 105, 122, 101, 114, 0,
			0, 0, 0, 56, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 110, 111,
			100, 101, 95, 99, 111, 110, 115, 116, 114, 97,
			105, 110, 116, 124, 71, 108, 116, 102, 68, 101,
			115, 101, 114, 105, 97, 108, 105, 122, 101, 114,
			0, 0, 0, 0, 54, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 110,
			111, 100, 101, 95, 99, 111, 110, 115, 116, 114,
			97, 105, 110, 116, 124, 82, 111, 108, 108, 67,
			111, 110, 115, 116, 114, 97, 105, 110, 116, 0,
			0, 0, 0, 53, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 110, 111,
			100, 101, 95, 99, 111, 110, 115, 116, 114, 97,
			105, 110, 116, 124, 65, 105, 109, 67, 111, 110,
			115, 116, 114, 97, 105, 110, 116, 0, 0, 0,
			0, 58, 85, 110, 105, 71, 76, 84, 70, 46,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 86, 82, 77, 67, 95, 110, 111, 100, 101,
			95, 99, 111, 110, 115, 116, 114, 97, 105, 110,
			116, 124, 82, 111, 116, 97, 116, 105, 111, 110,
			67, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			0, 0, 0, 0, 50, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 110,
			111, 100, 101, 95, 99, 111, 110, 115, 116, 114,
			97, 105, 110, 116, 124, 67, 111, 110, 115, 116,
			114, 97, 105, 110, 116, 0, 0, 0, 0, 60,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 110, 111, 100, 101, 95, 99,
			111, 110, 115, 116, 114, 97, 105, 110, 116, 124,
			86, 82, 77, 67, 95, 110, 111, 100, 101, 95,
			99, 111, 110, 115, 116, 114, 97, 105, 110, 116,
			0, 0, 0, 0, 54, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 110,
			111, 100, 101, 95, 99, 111, 110, 115, 116, 114,
			97, 105, 110, 116, 124, 71, 108, 116, 102, 83,
			101, 114, 105, 97, 108, 105, 122, 101, 114, 0,
			0, 0, 0, 56, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 109, 97,
			116, 101, 114, 105, 97, 108, 115, 95, 109, 116,
			111, 111, 110, 124, 71, 108, 116, 102, 68, 101,
			115, 101, 114, 105, 97, 108, 105, 122, 101, 114,
			0, 0, 0, 0, 54, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 109,
			97, 116, 101, 114, 105, 97, 108, 115, 95, 109,
			116, 111, 111, 110, 124, 71, 108, 116, 102, 83,
			101, 114, 105, 97, 108, 105, 122, 101, 114, 0,
			0, 0, 0, 51, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 115, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 124, 71,
			108, 116, 102, 68, 101, 115, 101, 114, 105, 97,
			108, 105, 122, 101, 114, 0, 0, 0, 0, 54,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 115, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 124, 67, 111, 108, 108, 105,
			100, 101, 114, 83, 104, 97, 112, 101, 83, 112,
			104, 101, 114, 101, 0, 0, 0, 0, 55, 85,
			110, 105, 71, 76, 84, 70, 46, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 86, 82,
			77, 67, 95, 115, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 124, 67, 111, 108, 108, 105, 100,
			101, 114, 83, 104, 97, 112, 101, 67, 97, 112,
			115, 117, 108, 101, 0, 0, 0, 0, 48, 85,
			110, 105, 71, 76, 84, 70, 46, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 86, 82,
			77, 67, 95, 115, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 124, 67, 111, 108, 108, 105, 100,
			101, 114, 83, 104, 97, 112, 101, 0, 0, 0,
			0, 43, 85, 110, 105, 71, 76, 84, 70, 46,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 86, 82, 77, 67, 95, 115, 112, 114, 105,
			110, 103, 66, 111, 110, 101, 124, 67, 111, 108,
			108, 105, 100, 101, 114, 0, 0, 0, 0, 48,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 115, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 124, 67, 111, 108, 108, 105,
			100, 101, 114, 71, 114, 111, 117, 112, 0, 0,
			0, 0, 50, 85, 110, 105, 71, 76, 84, 70,
			46, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 86, 82, 77, 67, 95, 115, 112, 114,
			105, 110, 103, 66, 111, 110, 101, 124, 83, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 74, 111,
			105, 110, 116, 0, 0, 0, 0, 41, 85, 110,
			105, 71, 76, 84, 70, 46, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 46, 86, 82, 77,
			67, 95, 115, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 124, 83, 112, 114, 105, 110, 103, 0,
			0, 0, 0, 50, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 115, 112,
			114, 105, 110, 103, 66, 111, 110, 101, 124, 86,
			82, 77, 67, 95, 115, 112, 114, 105, 110, 103,
			66, 111, 110, 101, 0, 0, 0, 0, 49, 85,
			110, 105, 71, 76, 84, 70, 46, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 86, 82,
			77, 67, 95, 115, 112, 114, 105, 110, 103, 66,
			111, 110, 101, 124, 71, 108, 116, 102, 83, 101,
			114, 105, 97, 108, 105, 122, 101, 114, 0, 0,
			0, 0, 44, 85, 110, 105, 71, 76, 84, 70,
			46, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 86, 82, 77, 67, 95, 118, 114, 109,
			124, 71, 108, 116, 102, 68, 101, 115, 101, 114,
			105, 97, 108, 105, 122, 101, 114, 0, 0, 0,
			0, 32, 85, 110, 105, 71, 76, 84, 70, 46,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 86, 82, 77, 67, 95, 118, 114, 109, 124,
			77, 101, 116, 97, 0, 0, 0, 0, 37, 85,
			110, 105, 71, 76, 84, 70, 46, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 86, 82,
			77, 67, 95, 118, 114, 109, 124, 72, 117, 109,
			97, 110, 66, 111, 110, 101, 0, 0, 0, 0,
			38, 85, 110, 105, 71, 76, 84, 70, 46, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			86, 82, 77, 67, 95, 118, 114, 109, 124, 72,
			117, 109, 97, 110, 66, 111, 110, 101, 115, 0,
			0, 0, 0, 36, 85, 110, 105, 71, 76, 84,
			70, 46, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 86, 82, 77, 67, 95, 118, 114,
			109, 124, 72, 117, 109, 97, 110, 111, 105, 100,
			0, 0, 0, 0, 42, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 118,
			114, 109, 124, 77, 101, 115, 104, 65, 110, 110,
			111, 116, 97, 116, 105, 111, 110, 0, 0, 0,
			0, 39, 85, 110, 105, 71, 76, 84, 70, 46,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 86, 82, 77, 67, 95, 118, 114, 109, 124,
			70, 105, 114, 115, 116, 80, 101, 114, 115, 111,
			110, 0, 0, 0, 0, 42, 85, 110, 105, 71,
			76, 84, 70, 46, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 86, 82, 77, 67, 95,
			118, 114, 109, 124, 76, 111, 111, 107, 65, 116,
			82, 97, 110, 103, 101, 77, 97, 112, 0, 0,
			0, 0, 34, 85, 110, 105, 71, 76, 84, 70,
			46, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 86, 82, 77, 67, 95, 118, 114, 109,
			124, 76, 111, 111, 107, 65, 116, 0, 0, 0,
			0, 43, 85, 110, 105, 71, 76, 84, 70, 46,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 86, 82, 77, 67, 95, 118, 114, 109, 124,
			77, 111, 114, 112, 104, 84, 97, 114, 103, 101,
			116, 66, 105, 110, 100, 0, 0, 0, 0, 45,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 118, 114, 109, 124, 77, 97,
			116, 101, 114, 105, 97, 108, 67, 111, 108, 111,
			114, 66, 105, 110, 100, 0, 0, 0, 0, 48,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 118, 114, 109, 124, 84, 101,
			120, 116, 117, 114, 101, 84, 114, 97, 110, 115,
			102, 111, 114, 109, 66, 105, 110, 100, 0, 0,
			0, 0, 38, 85, 110, 105, 71, 76, 84, 70,
			46, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 86, 82, 77, 67, 95, 118, 114, 109,
			124, 69, 120, 112, 114, 101, 115, 115, 105, 111,
			110, 0, 0, 0, 0, 34, 85, 110, 105, 71,
			76, 84, 70, 46, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 86, 82, 77, 67, 95,
			118, 114, 109, 124, 80, 114, 101, 115, 101, 116,
			0, 0, 0, 0, 39, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 118,
			114, 109, 124, 69, 120, 112, 114, 101, 115, 115,
			105, 111, 110, 115, 0, 0, 0, 0, 36, 85,
			110, 105, 71, 76, 84, 70, 46, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 86, 82,
			77, 67, 95, 118, 114, 109, 124, 86, 82, 77,
			67, 95, 118, 114, 109, 0, 0, 0, 0, 42,
			85, 110, 105, 71, 76, 84, 70, 46, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 86,
			82, 77, 67, 95, 118, 114, 109, 124, 71, 108,
			116, 102, 83, 101, 114, 105, 97, 108, 105, 122,
			101, 114, 0, 0, 0, 0, 35, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 114, 109, 49,
			48, 72, 117, 109, 97, 110, 111, 105, 100, 66,
			111, 110, 101, 65, 116, 116, 114, 105, 98, 117,
			116, 101, 0, 0, 0, 0, 39, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 86, 114, 109, 49,
			48, 72, 117, 109, 97, 110, 111, 105, 100, 66,
			111, 110, 101, 83, 112, 101, 99, 105, 102, 105,
			99, 97, 116, 105, 111, 110, 0, 0, 0, 0,
			24, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			65, 114, 114, 97, 121, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 29,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 24, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 73, 110, 100, 101, 120, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 37, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 66, 117, 105, 108, 116, 73, 110, 86,
			114, 109, 49, 48, 77, 97, 116, 101, 114, 105,
			97, 108, 69, 120, 112, 111, 114, 116, 101, 114,
			0, 0, 0, 0, 42, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 66, 117, 105, 108, 116, 73,
			110, 86, 114, 109, 49, 48, 77, 84, 111, 111,
			110, 77, 97, 116, 101, 114, 105, 97, 108, 69,
			120, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 48, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 66, 117, 105, 108, 116, 73, 110, 86, 114,
			109, 49, 48, 77, 97, 116, 101, 114, 105, 97,
			108, 68, 101, 115, 99, 114, 105, 112, 116, 111,
			114, 71, 101, 110, 101, 114, 97, 116, 111, 114,
			0, 0, 0, 0, 42, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 66, 117, 105, 108, 116, 73,
			110, 86, 114, 109, 49, 48, 77, 84, 111, 111,
			110, 77, 97, 116, 101, 114, 105, 97, 108, 73,
			109, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 38, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 85, 114, 112, 86, 114, 109, 49, 48, 77,
			84, 111, 111, 110, 77, 97, 116, 101, 114, 105,
			97, 108, 73, 109, 112, 111, 114, 116, 101, 114,
			0, 0, 0, 0, 44, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 85, 114, 112, 86, 114, 109,
			49, 48, 77, 97, 116, 101, 114, 105, 97, 108,
			68, 101, 115, 99, 114, 105, 112, 116, 111, 114,
			71, 101, 110, 101, 114, 97, 116, 111, 114, 0,
			0, 0, 0, 72, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 86, 114, 109, 49, 48, 82, 101,
			110, 100, 101, 114, 80, 105, 112, 101, 108, 105,
			110, 101, 77, 97, 116, 101, 114, 105, 97, 108,
			68, 101, 115, 99, 114, 105, 112, 116, 111, 114,
			71, 101, 110, 101, 114, 97, 116, 111, 114, 68,
			101, 115, 99, 114, 105, 112, 116, 111, 114, 85,
			116, 105, 108, 105, 116, 121, 0, 0, 0, 0,
			33, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			86, 114, 109, 49, 48, 77, 97, 116, 101, 114,
			105, 97, 108, 69, 120, 112, 111, 114, 116, 85,
			116, 105, 108, 115, 0, 0, 0, 0, 54, 85,
			110, 105, 86, 82, 77, 49, 48, 46, 86, 114,
			109, 49, 48, 77, 97, 116, 101, 114, 105, 97,
			108, 69, 120, 112, 111, 114, 116, 85, 116, 105,
			108, 115, 124, 69, 109, 112, 116, 121, 71, 108,
			116, 102, 84, 101, 120, 116, 117, 114, 101, 73,
			110, 102, 111, 0, 0, 0, 0, 22, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 68, 97, 116, 97,
			0, 0, 0, 0, 24, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 67, 111, 112, 121, 73, 110,
			100, 105, 99, 101, 115, 74, 111, 98, 115, 0,
			0, 0, 0, 19, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 124, 85, 73, 110, 116, 50, 85,
			73, 110, 116, 0, 0, 0, 0, 21, 85, 110,
			105, 86, 82, 77, 49, 48, 46, 124, 85, 115,
			104, 111, 114, 116, 50, 85, 105, 110, 116, 0,
			0, 0, 0, 23, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 124, 85, 115, 104, 111, 114, 116,
			50, 85, 115, 104, 111, 114, 116, 0, 0, 0,
			0, 21, 85, 110, 105, 86, 82, 77, 49, 48,
			46, 124, 85, 105, 110, 116, 50, 85, 115, 104,
			111, 114, 116, 0, 0, 0, 0, 34, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 73, 110, 116,
			101, 114, 108, 101, 97, 118, 101, 77, 101, 115,
			104, 86, 101, 114, 116, 105, 99, 101, 115, 74,
			111, 98, 0, 0, 0, 0, 28, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 77, 101, 115, 104,
			73, 109, 112, 111, 114, 116, 101, 114, 68, 105,
			118, 105, 100, 101, 100, 0, 0, 0, 0, 27,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 77,
			101, 115, 104, 73, 109, 112, 111, 114, 116, 101,
			114, 83, 104, 97, 114, 101, 100, 0, 0, 0,
			0, 19, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 77, 101, 115, 104, 82, 101, 97, 100, 101,
			114, 0, 0, 0, 0, 20, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 77, 101, 115, 104, 86,
			101, 114, 116, 101, 120, 48, 0, 0, 0, 0,
			20, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			77, 101, 115, 104, 86, 101, 114, 116, 101, 120,
			49, 0, 0, 0, 0, 20, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 77, 101, 115, 104, 86,
			101, 114, 116, 101, 120, 50, 0, 0, 0, 0,
			26, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			77, 101, 115, 104, 86, 101, 114, 116, 101, 120,
			85, 116, 105, 108, 105, 116, 121, 0, 0, 0,
			0, 19, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 77, 101, 115, 104, 87, 114, 105, 116, 101,
			114, 0, 0, 0, 0, 22, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 77, 111, 100, 101, 108,
			69, 120, 112, 111, 114, 116, 101, 114, 0, 0,
			0, 0, 20, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 77, 111, 100, 101, 108, 82, 101, 97,
			100, 101, 114, 0, 0, 0, 0, 34, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 86, 114, 109,
			49, 48, 77, 84, 111, 111, 110, 84, 101, 120,
			116, 117, 114, 101, 73, 109, 112, 111, 114, 116,
			101, 114, 0, 0, 0, 0, 51, 85, 110, 105,
			86, 82, 77, 49, 48, 46, 86, 114, 109, 49,
			48, 77, 84, 111, 111, 110, 84, 101, 120, 116,
			117, 114, 101, 73, 109, 112, 111, 114, 116, 101,
			114, 124, 86, 114, 109, 49, 48, 84, 101, 120,
			116, 117, 114, 101, 73, 110, 102, 111, 0, 0,
			0, 0, 40, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 49, 48, 84, 101, 120,
			116, 117, 114, 101, 68, 101, 115, 99, 114, 105,
			112, 116, 111, 114, 71, 101, 110, 101, 114, 97,
			116, 111, 114, 0, 0, 0, 0, 23, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 85, 110, 105,
			116, 121, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 0, 0, 0, 0, 14, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 86, 114, 109, 49, 48,
			0, 0, 0, 0, 18, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 86, 114, 109, 49, 48, 68,
			97, 116, 97, 0, 0, 0, 0, 23, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 86, 114, 109,
			49, 48, 69, 120, 99, 101, 112, 116, 105, 111,
			110, 0, 0, 0, 0, 34, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 86, 114, 109, 49, 48,
			78, 111, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 69, 120, 99, 101, 112, 116, 105, 111, 110,
			0, 0, 0, 0, 22, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 86, 114, 109, 49, 48, 69,
			120, 112, 111, 114, 116, 101, 114, 0, 0, 0,
			0, 24, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 86, 114, 109, 49, 48, 73, 109, 112, 111,
			114, 116, 68, 97, 116, 97, 0, 0, 0, 0,
			22, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			86, 114, 109, 49, 48, 73, 109, 112, 111, 114,
			116, 101, 114, 0, 0, 0, 0, 31, 85, 110,
			105, 86, 82, 77, 49, 48, 46, 86, 114, 109,
			49, 48, 73, 109, 112, 111, 114, 116, 101, 114,
			124, 77, 111, 100, 101, 108, 77, 97, 112, 0,
			0, 0, 0, 29, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 86, 114, 109, 65, 110, 105, 109,
			97, 116, 105, 111, 110, 69, 120, 112, 111, 114,
			116, 101, 114, 0, 0, 0, 0, 46, 85, 110,
			105, 86, 82, 77, 49, 48, 46, 86, 114, 109,
			65, 110, 105, 109, 97, 116, 105, 111, 110, 69,
			120, 112, 111, 114, 116, 101, 114, 124, 80, 111,
			115, 105, 116, 105, 111, 110, 69, 120, 112, 111,
			114, 116, 101, 114, 0, 0, 0, 0, 46, 85,
			110, 105, 86, 82, 77, 49, 48, 46, 86, 114,
			109, 65, 110, 105, 109, 97, 116, 105, 111, 110,
			69, 120, 112, 111, 114, 116, 101, 114, 124, 82,
			111, 116, 97, 116, 105, 111, 110, 69, 120, 112,
			111, 114, 116, 101, 114, 0, 0, 0, 0, 29,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 86,
			114, 109, 65, 110, 105, 109, 97, 116, 105, 111,
			110, 73, 109, 112, 111, 114, 116, 101, 114, 0,
			0, 0, 0, 44, 85, 110, 105, 86, 82, 77,
			49, 48, 46, 86, 114, 109, 65, 110, 105, 109,
			97, 116, 105, 111, 110, 73, 109, 112, 111, 114,
			116, 101, 114, 124, 69, 120, 112, 114, 101, 115,
			115, 105, 111, 110, 73, 110, 102, 111, 0, 0,
			0, 0, 25, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 65, 110, 105, 109, 97,
			116, 105, 111, 110, 85, 116, 105, 108, 0, 0,
			0, 0, 25, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 49, 48, 77, 101, 115,
			104, 85, 116, 105, 108, 105, 116, 121, 0, 0,
			0, 0, 37, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 76, 101, 103, 97, 99, 121, 85, 110, 108,
			105, 116, 77, 97, 116, 101, 114, 105, 97, 108,
			0, 0, 0, 0, 30, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 77, 105, 103, 114, 97, 116,
			105, 111, 110, 77, 97, 116, 101, 114, 105, 97,
			108, 85, 116, 105, 108, 0, 0, 0, 0, 31,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 77,
			105, 103, 114, 97, 116, 105, 111, 110, 77, 84,
			111, 111, 110, 77, 97, 116, 101, 114, 105, 97,
			108, 0, 0, 0, 0, 29, 85, 110, 105, 86,
			82, 77, 49, 48, 124, 77, 105, 103, 114, 97,
			116, 105, 111, 110, 80, 98, 114, 77, 97, 116,
			101, 114, 105, 97, 108, 0, 0, 0, 0, 48,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 77,
			105, 103, 114, 97, 116, 105, 111, 110, 85, 110,
			108, 105, 116, 84, 114, 97, 110, 115, 112, 97,
			114, 101, 110, 116, 90, 87, 114, 105, 116, 101,
			77, 97, 116, 101, 114, 105, 97, 108, 0, 0,
			0, 0, 34, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 48, 88, 77, 84, 111,
			111, 110, 84, 101, 120, 116, 117, 114, 101, 73,
			110, 100, 101, 120, 77, 97, 112, 0, 0, 0,
			0, 24, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 86, 114, 109, 48, 88, 77, 84, 111, 111,
			110, 86, 97, 108, 117, 101, 0, 0, 0, 0,
			20, 85, 110, 105, 86, 82, 77, 49, 48, 124,
			77, 101, 115, 104, 85, 112, 100, 97, 116, 101,
			114, 0, 0, 0, 0, 34, 85, 110, 105, 86,
			82, 77, 49, 48, 46, 77, 101, 115, 104, 85,
			112, 100, 97, 116, 101, 114, 124, 77, 111, 114,
			112, 104, 65, 99, 99, 101, 115, 115, 111, 114,
			0, 0, 0, 0, 23, 85, 110, 105, 86, 82,
			77, 49, 48, 124, 77, 105, 103, 114, 97, 116,
			105, 111, 110, 67, 104, 101, 99, 107, 0, 0,
			0, 0, 42, 85, 110, 105, 86, 82, 77, 49,
			48, 46, 77, 105, 103, 114, 97, 116, 105, 111,
			110, 67, 104, 101, 99, 107, 124, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 69, 120, 99, 101,
			112, 116, 105, 111, 110, 0, 0, 0, 0, 27,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 77,
			105, 103, 114, 97, 116, 105, 111, 110, 69, 120,
			99, 101, 112, 116, 105, 111, 110, 0, 0, 0,
			0, 27, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 77, 105, 103, 114, 97, 116, 105, 111, 110,
			77, 97, 116, 101, 114, 105, 97, 108, 115, 0,
			0, 0, 0, 23, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 77, 105, 103, 114, 97, 116, 101,
			86, 101, 99, 116, 111, 114, 51, 0, 0, 0,
			0, 21, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 77, 105, 103, 114, 97, 116, 105, 111, 110,
			86, 114, 109, 0, 0, 0, 0, 31, 85, 110,
			105, 86, 82, 77, 49, 48, 124, 77, 105, 103,
			114, 97, 116, 105, 111, 110, 86, 114, 109, 69,
			120, 112, 114, 101, 115, 115, 105, 111, 110, 0,
			0, 0, 0, 41, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 86, 114, 109, 76, 111, 111, 107, 65,
			116, 65, 110, 100, 70, 105, 114, 115, 116, 80,
			101, 114, 115, 111, 110, 0, 0, 0, 0, 29,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 77,
			105, 103, 114, 97, 116, 105, 111, 110, 86, 114,
			109, 72, 117, 109, 97, 110, 111, 105, 100, 0,
			0, 0, 0, 25, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 86, 114, 109, 77, 101, 116, 97, 0,
			0, 0, 0, 31, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 77, 105, 103, 114, 97, 116, 105,
			111, 110, 86, 114, 109, 83, 112, 114, 105, 110,
			103, 66, 111, 110, 101, 0, 0, 0, 0, 55,
			85, 110, 105, 86, 82, 77, 49, 48, 46, 77,
			105, 103, 114, 97, 116, 105, 111, 110, 86, 114,
			109, 83, 112, 114, 105, 110, 103, 66, 111, 110,
			101, 124, 83, 112, 114, 105, 110, 103, 66, 111,
			110, 101, 71, 114, 111, 117, 112, 77, 105, 103,
			114, 97, 116, 111, 114, 0, 0, 0, 0, 17,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 77,
			105, 103, 114, 97, 116, 111, 114, 0, 0, 0,
			0, 30, 85, 110, 105, 86, 82, 77, 49, 48,
			124, 85, 110, 78, 111, 114, 109, 97, 108, 105,
			122, 101, 100, 69, 120, 99, 101, 112, 116, 105,
			111, 110, 0, 0, 0, 0, 19, 85, 110, 105,
			86, 82, 77, 49, 48, 124, 82, 111, 116, 97,
			116, 101, 89, 49, 56, 48, 0, 0, 0, 0,
			27, 85, 110, 105, 86, 82, 77, 49, 48, 46,
			77, 105, 103, 114, 97, 116, 105, 111, 110, 124,
			86, 114, 109, 48, 77, 101, 116, 97, 0, 0,
			0, 0, 21, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 114, 109, 48, 88, 86, 101, 114,
			115, 105, 111, 110, 0, 0, 0, 0, 29, 85,
			110, 105, 86, 82, 77, 49, 48, 46, 86, 114,
			109, 48, 88, 86, 101, 114, 115, 105, 111, 110,
			124, 86, 101, 114, 115, 105, 111, 110, 0, 0,
			0, 0, 22, 85, 110, 105, 86, 82, 77, 49,
			48, 46, 83, 97, 109, 112, 108, 101, 124, 83,
			97, 109, 112, 108, 101, 0, 0, 0, 0, 25,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 83,
			116, 114, 105, 110, 103, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 15,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 80,
			111, 115, 82, 111, 116, 0, 0, 0, 0, 19,
			85, 110, 105, 86, 82, 77, 49, 48, 124, 66,
			108, 101, 110, 100, 83, 104, 97, 112, 101, 0,
			0, 0, 0, 24, 85, 110, 105, 86, 82, 77,
			49, 48, 124, 85, 110, 105, 116, 121, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 1, 0,
			0, 0, 25, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 82, 77, 49, 48, 83, 112, 101,
			99, 86, 101, 114, 115, 105, 111, 110, 1, 0,
			0, 0, 25, 85, 110, 105, 86, 82, 77, 49,
			48, 124, 86, 82, 77, 49, 48, 83, 112, 101,
			99, 86, 101, 114, 115, 105, 111, 110, 0, 0,
			0, 0, 33, 85, 110, 105, 86, 82, 77, 49,
			48, 46, 86, 82, 77, 49, 48, 83, 112, 101,
			99, 86, 101, 114, 115, 105, 111, 110, 124, 86,
			101, 114, 115, 105, 111, 110
		};
		result.TotalFiles = 148;
		result.TotalTypes = 209;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniGLTF.Extensions.VRMC_vrm
{
	public static class GltfDeserializer
	{
		public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From("VRMC_vrm");

		public static bool TryGet(glTFExtension src, out VRMC_vrm extension)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: 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)
			glTFExtensionImport val = (glTFExtensionImport)(object)((src is glTFExtensionImport) ? src : null);
			if (val != null)
			{
				foreach (KeyValuePair<JsonNode, JsonNode> item in val.ObjectItems())
				{
					if (ListTreeNodeExtensions.GetUtf8String(item.Key) == ExtensionNameUtf8)
					{
						extension = Deserialize(item.Value);
						return true;
					}
				}
			}
			extension = null;
			return false;
		}

		public static VRMC_vrm Deserialize(JsonNode parsed)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			VRMC_vrm vRMC_vrm = new VRMC_vrm();
			foreach (KeyValuePair<JsonNode, JsonNode> item in IValueNodeObjectExtensions.ObjectItems(parsed))
			{
				switch (ListTreeNodeExtensions.GetString(item.Key))
				{
				case "extensions":
					vRMC_vrm.Extensions = (object)new glTFExtensionImport(item.Value);
					break;
				case "extras":
					vRMC_vrm.Extras = (object)new glTFExtensionImport(item.Value);
					break;
				case "specVersion":
					vRMC_vrm.SpecVersion = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "meta":
					vRMC_vrm.Meta = Deserialize_Meta(item.Value);
					break;
				case "humanoid":
					vRMC_vrm.Humanoid = Deserialize_Humanoid(item.Value);
					break;
				case "firstPerson":
					vRMC_vrm.FirstPerson = Deserialize_FirstPerson(item.Value);
					break;
				case "lookAt":
					vRMC_vrm.LookAt = Deserialize_LookAt(item.Value);
					break;
				case "expressions":
					vRMC_vrm.Expressions = Deserialize_Expressions(item.Value);
					break;
				}
			}
			return vRMC_vrm;
		}

		public static Meta Deserialize_Meta(JsonNode parsed)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: 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_015b: 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_01a8: 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_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_022e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_0348: Unknown result type (might be due to invalid IL or missing references)
			//IL_0374: Unknown result type (might be due to invalid IL or missing references)
			Meta meta = new Meta();
			foreach (KeyValuePair<JsonNode, JsonNode> item in IValueNodeObjectExtensions.ObjectItems(parsed))
			{
				switch (ListTreeNodeExtensions.GetString(item.Key))
				{
				case "extensions":
					meta.Extensions = (object)new glTFExtensionImport(item.Value);
					break;
				case "extras":
					meta.Extras = (object)new glTFExtensionImport(item.Value);
					break;
				case "name":
					meta.Name = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "version":
					meta.Version = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "authors":
					meta.Authors = __meta_Deserialize_Authors(item.Value);
					break;
				case "copyrightInformation":
					meta.CopyrightInformation = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "contactInformation":
					meta.ContactInformation = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "references":
					meta.References = __meta_Deserialize_References(item.Value);
					break;
				case "thirdPartyLicenses":
					meta.ThirdPartyLicenses = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "thumbnailImage":
					meta.ThumbnailImage = ListTreeNodeExtensions.GetInt32(item.Value);
					break;
				case "licenseUrl":
					meta.LicenseUrl = ListTreeNodeExtensions.GetString(item.Value);
					break;
				case "avatarPermission":
					meta.AvatarPermission = (AvatarPermissionType)Enum.Parse(typeof(AvatarPermissionType), ListTreeNodeExtensions.GetString(item.Value), ignoreCase: true);
					break;
				case "allowExcessivelyViolentUsage":
					meta.AllowExcessivelyViolentUsage = ListTreeNodeExtensions.GetBoolean(item.Value);
					break;
				case "allowExcessivelySexualUsage":
					meta.AllowExcessivelySexualUsage = ListTreeNodeExtensions.GetBoolean(item.Value);
					break;
				case "commercialUsage":
					meta.CommercialUsage = (CommercialUsageType)Enum.Parse(typeof(CommercialUsageType), ListTreeNodeExtensions.GetString(item.Value), ignoreCase: true);
					break;
				case "allowPoliticalOrReligiousUsage":
					meta.AllowPoliticalOrReligiousUsage = ListTreeNodeExtensions.GetBoolean(item.Value);
					break;
				case "allowAntisocialOrHateUsage":
					meta.AllowAntisocialOrHateUsage = ListTreeNodeExtensions.GetBoolean(item.Value);
					break;
				case "creditNotation":
					meta.CreditNotation = (CreditNotationType)Enum.Parse(typeof(CreditNotationType), ListTreeNodeExtensions.GetString(item.Value), ignoreCase: true);
					break;
				case "allowRedistribution":
					meta.AllowRedistribution = ListTreeNodeExtensions.GetBoolean(item.Value);
					break;
				case "modification":
					meta.Modification = (ModificationType)Enum.Parse(typeof(ModificationType), ListTreeNodeExtensions.GetString(item.Value), ignoreCase: true);
					break;
				case "otherLicenseUrl":
					meta.OtherLicenseUrl = ListTreeNodeExtensions.GetString(item.Value);
					break;
				}
			}
			return meta;
		}

		public static List<string> __meta_Deserialize_Authors(JsonNode parsed)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//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_001c: Unknown result type (might be due to invalid IL or missing references)
			List<string> list = new List<string>();
			foreach (JsonNode item in ListTreeNodeArrayExtensions.ArrayItems(parsed))
			{
				list.Add(ListTreeNodeExtensions.GetString(item));
			}
			return list;
		}

		public static List<string> __meta_Deserialize_References(JsonNode parsed)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//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_001c: Unknown result type (might be due to invalid IL or missing references)
			List<string> list = new List<string>();
			foreach (JsonNode item in ListTreeNodeArrayExtensions.ArrayItems(parsed))
			{
				list.Add(ListTreeNodeExtensions.GetString(item));
			}
			return list;
		}

		public static Humanoid Deserialize_Humanoid(JsonNode parsed)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Expected O, but got Unknown
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			Humanoid humanoid = new Humanoid();
			foreach (KeyValuePair<JsonNode, JsonNode> item in IValueNodeObjectExtensions.ObjectItems(parsed))
			{
				switch (ListTreeNodeExtensions.GetString(item.Key))
				{
				case "extensions":
					humanoid.Extensions = (object)new glTFExtensionImport(item.Value);
					break;
				case "extras":
					humanoid.Extras = (object)new glTFExtensionImport(item.Value);
					break;
				case "humanBones":
					humanoid.HumanBones = __humanoid_Deserialize_HumanBones(item.Value);
					break;
				}
			}
			return humanoid;
		}

		public static HumanBones __humanoid_Deserialize_HumanBones(JsonNode parsed)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: 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_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: 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_015b: 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_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_027b: 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_02c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_0377: Unknown result type (might be due to invalid IL or missing references)
			//IL_039b: 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_03e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_042b: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_0497: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or 

valheim_Data/Managed/VrmLib.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Text;
using UniGLTF;
using UniGLTF.Utils;
using Unity.Collections;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[896]
		{
			0, 0, 0, 1, 0, 0, 0, 43, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 118, 114, 109, 108, 105, 98, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 67, 111, 111,
			114, 100, 105, 110, 97, 116, 101, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 42, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 118, 114, 109, 108, 105, 98, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
			112, 111, 114, 116, 65, 114, 103, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 57, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 118, 114, 109, 108, 105, 98, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 92, 76,
			105, 115, 116, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 38, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 49, 48, 92, 118, 114,
			109, 108, 105, 98, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 71, 108, 116, 102, 73, 100, 46,
			99, 115, 0, 0, 0, 7, 0, 0, 0, 49,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 118, 114, 109, 108, 105, 98,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 72,
			117, 109, 97, 110, 111, 105, 100, 92, 72, 117,
			109, 97, 110, 111, 105, 100, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 54, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 49, 48,
			92, 118, 114, 109, 108, 105, 98, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 72, 117, 109, 97,
			110, 111, 105, 100, 92, 72, 117, 109, 97, 110,
			111, 105, 100, 66, 111, 110, 101, 115, 46, 99,
			115, 0, 0, 0, 3, 0, 0, 0, 58, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			49, 48, 92, 118, 114, 109, 108, 105, 98, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 72, 117,
			109, 97, 110, 111, 105, 100, 92, 83, 107, 101,
			108, 101, 116, 111, 110, 69, 115, 116, 105, 109,
			97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			3, 0, 0, 0, 60, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 118,
			114, 109, 108, 105, 98, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 72, 117, 109, 97, 110, 111,
			105, 100, 92, 83, 107, 101, 108, 101, 116, 111,
			110, 77, 101, 115, 104, 85, 116, 105, 108, 105,
			116, 121, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 41, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 49, 48, 92, 118, 114, 109,
			108, 105, 98, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 77, 97, 116, 104, 70, 87, 114, 97,
			112, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 36, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 118, 114, 109, 108,
			105, 98, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 77, 101, 115, 104, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 41, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 49, 48, 92,
			118, 114, 109, 108, 105, 98, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 101, 115, 104, 71,
			114, 111, 117, 112, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 37, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 118,
			114, 109, 108, 105, 98, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 77, 111, 100, 101, 108, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 43,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 49, 48, 92, 118, 114, 109, 108, 105, 98,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 77,
			111, 114, 112, 104, 84, 97, 114, 103, 101, 116,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			36, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 49, 48, 92, 118, 114, 109, 108, 105,
			98, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			78, 111, 100, 101, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 45, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 49, 48, 92, 118,
			114, 109, 108, 105, 98, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 78, 111, 100, 101, 65, 110,
			105, 109, 97, 116, 105, 111, 110, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 36, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 49,
			48, 92, 118, 114, 109, 108, 105, 98, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 83, 107, 105,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 44, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 49, 48, 92, 118, 114, 109, 108,
			105, 98, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 86, 101, 114, 116, 101, 120, 66, 117, 102,
			102, 101, 114, 46, 99, 115
		};
		result.TypesData = new byte[748]
		{
			0, 0, 0, 0, 18, 86, 114, 109, 76, 105,
			98, 124, 67, 111, 111, 114, 100, 105, 110, 97,
			116, 101, 115, 0, 0, 0, 0, 17, 86, 114,
			109, 76, 105, 98, 124, 69, 120, 112, 111, 114,
			116, 65, 114, 103, 115, 0, 0, 0, 0, 21,
			86, 114, 109, 76, 105, 98, 124, 76, 105, 115,
			116, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 0, 0, 0, 0, 13, 86, 114, 109, 76,
			105, 98, 124, 71, 108, 116, 102, 73, 100, 0,
			0, 0, 0, 19, 86, 114, 109, 76, 105, 98,
			124, 72, 117, 109, 97, 110, 111, 105, 100, 72,
			101, 97, 100, 0, 0, 0, 0, 18, 86, 114,
			109, 76, 105, 98, 124, 72, 117, 109, 97, 110,
			111, 105, 100, 65, 114, 109, 0, 0, 0, 0,
			18, 86, 114, 109, 76, 105, 98, 124, 72, 117,
			109, 97, 110, 111, 105, 100, 76, 101, 103, 0,
			0, 0, 0, 21, 86, 114, 109, 76, 105, 98,
			124, 72, 117, 109, 97, 110, 111, 105, 100, 70,
			105, 110, 103, 101, 114, 0, 0, 0, 0, 20,
			86, 114, 109, 76, 105, 98, 124, 72, 117, 109,
			97, 110, 111, 105, 100, 84, 104, 117, 109, 98,
			0, 0, 0, 0, 22, 86, 114, 109, 76, 105,
			98, 124, 72, 117, 109, 97, 110, 111, 105, 100,
			70, 105, 110, 103, 101, 114, 115, 0, 0, 0,
			0, 15, 86, 114, 109, 76, 105, 98, 124, 72,
			117, 109, 97, 110, 111, 105, 100, 0, 0, 0,
			0, 28, 86, 114, 109, 76, 105, 98, 124, 66,
			111, 110, 101, 82, 101, 113, 117, 105, 114, 101,
			100, 65, 116, 116, 114, 105, 98, 117, 116, 101,
			0, 0, 0, 0, 24, 86, 114, 109, 76, 105,
			98, 124, 83, 107, 101, 108, 101, 116, 111, 110,
			69, 115, 116, 105, 109, 97, 116, 111, 114, 0,
			0, 0, 0, 28, 86, 114, 109, 76, 105, 98,
			46, 83, 107, 101, 108, 101, 116, 111, 110, 69,
			115, 116, 105, 109, 97, 116, 111, 114, 124, 65,
			114, 109, 0, 0, 0, 0, 28, 86, 114, 109,
			76, 105, 98, 46, 83, 107, 101, 108, 101, 116,
			111, 110, 69, 115, 116, 105, 109, 97, 116, 111,
			114, 124, 76, 101, 103, 0, 0, 0, 0, 17,
			86, 114, 109, 76, 105, 98, 124, 66, 111, 110,
			101, 87, 101, 105, 103, 104, 116, 0, 0, 0,
			0, 18, 86, 114, 109, 76, 105, 98, 124, 77,
			101, 115, 104, 66, 117, 105, 108, 100, 101, 114,
			0, 0, 0, 0, 19, 86, 114, 109, 76, 105,
			98, 124, 66, 111, 110, 101, 72, 101, 97, 100,
			84, 97, 105, 108, 0, 0, 0, 0, 16, 86,
			114, 109, 76, 105, 98, 124, 77, 97, 116, 104,
			70, 87, 114, 97, 112, 0, 0, 0, 0, 15,
			86, 114, 109, 76, 105, 98, 124, 84, 114, 105,
			97, 110, 103, 108, 101, 0, 0, 0, 0, 14,
			86, 114, 109, 76, 105, 98, 124, 83, 117, 98,
			109, 101, 115, 104, 0, 0, 0, 0, 11, 86,
			114, 109, 76, 105, 98, 124, 77, 101, 115, 104,
			0, 0, 0, 0, 16, 86, 114, 109, 76, 105,
			98, 124, 77, 101, 115, 104, 71, 114, 111, 117,
			112, 0, 0, 0, 0, 12, 86, 114, 109, 76,
			105, 98, 124, 77, 111, 100, 101, 108, 0, 0,
			0, 0, 21, 86, 114, 109, 76, 105, 98, 46,
			77, 111, 100, 101, 108, 124, 82, 101, 118, 101,
			114, 115, 101, 114, 0, 0, 0, 0, 18, 86,
			114, 109, 76, 105, 98, 124, 77, 111, 114, 112,
			104, 84, 97, 114, 103, 101, 116, 0, 0, 0,
			0, 11, 86, 114, 109, 76, 105, 98, 124, 78,
			111, 100, 101, 0, 0, 0, 0, 21, 86, 114,
			109, 76, 105, 98, 124, 78, 111, 100, 101, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
			0, 0, 0, 19, 86, 114, 109, 76, 105, 98,
			124, 67, 117, 114, 118, 101, 83, 97, 109, 112,
			108, 101, 114, 0, 0, 0, 0, 20, 86, 114,
			109, 76, 105, 98, 124, 78, 111, 100, 101, 65,
			110, 105, 109, 97, 116, 105, 111, 110, 0, 0,
			0, 0, 11, 86, 114, 109, 76, 105, 98, 124,
			83, 107, 105, 110, 0, 0, 0, 0, 19, 86,
			114, 109, 76, 105, 98, 124, 86, 101, 114, 116,
			101, 120, 66, 117, 102, 102, 101, 114
		};
		result.TotalFiles = 17;
		result.TotalTypes = 32;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace VrmLib;

public enum GeometryCoordinates
{
	Unknown,
	XYZ_RightUpBack_RH,
	XYZ_RightUpForward_RH,
	XYZ_RightUpForward_LH
}
public enum TextureOrigin
{
	Unknown,
	LeftTop,
	LeftBottom
}
public struct Coordinates
{
	public GeometryCoordinates Geometry;

	public TextureOrigin Texture;

	public static Coordinates Vrm0
	{
		get
		{
			Coordinates result = default(Coordinates);
			result.Geometry = GeometryCoordinates.XYZ_RightUpBack_RH;
			result.Texture = TextureOrigin.LeftTop;
			return result;
		}
	}

	public bool IsVrm0 => Equals(Vrm0);

	public static Coordinates Vrm1
	{
		get
		{
			Coordinates result = default(Coordinates);
			result.Geometry = GeometryCoordinates.XYZ_RightUpForward_RH;
			result.Texture = TextureOrigin.LeftTop;
			return result;
		}
	}

	public bool IsVrm1 => Equals(Vrm1);

	public static Coordinates Unity
	{
		get
		{
			Coordinates result = default(Coordinates);
			result.Geometry = GeometryCoordinates.XYZ_RightUpForward_LH;
			result.Texture = TextureOrigin.LeftBottom;
			return result;
		}
	}

	public bool IsUnity => Equals(Unity);
}
[Serializable]
public struct ExportArgs
{
	private bool? m_sparse;

	private bool? m_remove_morph_normal;

	private bool? m_remove_tangent;

	public bool sparse
	{
		get
		{
			if (!m_sparse.HasValue)
			{
				m_sparse = true;
			}
			return m_sparse.Value;
		}
		set
		{
			m_sparse = value;
		}
	}

	public bool removeMorphNormal
	{
		get
		{
			if (!m_remove_morph_normal.HasValue)
			{
				m_remove_morph_normal = false;
			}
			return m_remove_morph_normal.Value;
		}
		set
		{
			m_remove_morph_normal = value;
		}
	}

	public bool removeTangent
	{
		get
		{
			if (!m_remove_tangent.HasValue)
			{
				m_remove_tangent = true;
			}
			return m_remove_tangent.Value;
		}
		set
		{
			m_remove_tangent = value;
		}
	}
}
public static class ListExtensions
{
	public static int IndexOfThrow<T>(this List<T> list, T target)
	{
		int num = list.IndexOf(target);
		if (num == -1)
		{
			throw new KeyNotFoundException();
		}
		return num;
	}

	public static int? IndexOfNullable<T>(this List<T> list, T target)
	{
		int num = list.IndexOf(target);
		if (num == -1)
		{
			return null;
		}
		return num;
	}
}
public class GltfId
{
	public int? GltfIndex;

	public int SortOrder => GltfIndex.GetValueOrDefault(int.MaxValue);
}
public struct HumanoidHead
{
	public Node Head;

	public Node Jaw;

	public Node LeftEye;

	public Node RightEye;

	public bool HasRequiredBones => Head != null;
}
public struct HumanoidArm
{
	public Node Shoulder;

	public Node Upper;

	public Node Lower;

	public Node Hand;

	public bool HasRequiredBones
	{
		get
		{
			if (Upper != null && Lower != null)
			{
				return Hand != null;
			}
			return false;
		}
	}

	public Vector3 Direction
	{
		get
		{
			//IL_002f: 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_0044: 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_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			if (Shoulder != null)
			{
				return Vector3.Normalize(Hand.Translation - Shoulder.Translation);
			}
			return Vector3.Normalize(Hand.Translation - Upper.Translation);
		}
	}

	public void DirectTo(Vector3 dir)
	{
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: 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_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		if (Shoulder != null)
		{
			Shoulder.RotateFromTo(Upper.Translation - Shoulder.Translation, dir);
		}
		Upper.RotateFromTo(Lower.Translation - Upper.Translation, dir);
		Lower.RotateFromTo(Hand.Translation - Lower.Translation, dir);
	}
}
public struct HumanoidLeg
{
	public Node Upper;

	public Node Lower;

	public Node Foot;

	public Node Toe;
}
internal struct HumanoidFinger
{
	public Node Proximal;

	public Node Intermediate;

	public Node Distal;
}
internal struct HumanoidThumb
{
	public Node Metacarpal;

	public Node Proximal;

	public Node Distal;
}
internal struct HumanoidFingers
{
	public HumanoidThumb Thumb;

	public HumanoidFinger Index;

	public HumanoidFinger Middle;

	public HumanoidFinger Ring;

	public HumanoidFinger Little;
}
public class Humanoid : IDictionary<HumanoidBones, Node>, ICollection<KeyValuePair<HumanoidBones, Node>>, IEnumerable<KeyValuePair<HumanoidBones, Node>>, IEnumerable
{
	public Node Hips;

	public Node Spine;

	public Node Chest;

	public Node UpperChest;

	public Node Neck;

	private HumanoidHead Head;

	private HumanoidArm LeftArm;

	private HumanoidFingers LeftFingers;

	private HumanoidArm RightArm;

	private HumanoidFingers RightFingers;

	private HumanoidLeg LeftLeg;

	private HumanoidLeg RightLeg;

	public bool HasRequiredBones
	{
		get
		{
			if (Hips == null)
			{
				return false;
			}
			if (Spine == null)
			{
				return false;
			}
			if (!Head.HasRequiredBones)
			{
				return false;
			}
			if (!LeftArm.HasRequiredBones)
			{
				return false;
			}
			if (!RightArm.HasRequiredBones)
			{
				return false;
			}
			return true;
		}
	}

	ICollection<HumanoidBones> IDictionary<HumanoidBones, Node>.Keys
	{
		get
		{
			throw new NotImplementedException();
		}
	}

	ICollection<Node> IDictionary<HumanoidBones, Node>.Values
	{
		get
		{
			throw new NotImplementedException();
		}
	}

	int ICollection<KeyValuePair<HumanoidBones, Node>>.Count => this.Select((KeyValuePair<HumanoidBones, Node> _) => _).Count();

	bool ICollection<KeyValuePair<HumanoidBones, Node>>.IsReadOnly
	{
		get
		{
			throw new NotImplementedException();
		}
	}

	Node IDictionary<HumanoidBones, Node>.this[HumanoidBones key]
	{
		get
		{
			throw new NotImplementedException();
		}
		set
		{
			throw new NotImplementedException();
		}
	}

	public Node this[HumanoidBones key]
	{
		get
		{
			if (TryGetValue(key, out var value))
			{
				return value;
			}
			throw new KeyNotFoundException();
		}
	}

	public Node this[Node node]
	{
		get
		{
			if (node.HumanoidBone.HasValue && node.HumanoidBone.Value != 0)
			{
				return this[node.HumanoidBone.Value];
			}
			return Hips.Traverse().First((Node x) => x.Name == node.Name);
		}
	}

	public Humanoid()
	{
	}

	public Humanoid(Node root)
	{
		Assign(root);
	}

	public void Assign(Node root)
	{
		foreach (Node item in root.Traverse())
		{
			if (item.HumanoidBone.HasValue)
			{
				Add(item.HumanoidBone.Value, item);
			}
		}
	}

	private void CopyTraverse(Node src, Node dst)
	{
		//IL_000e: 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_0026: Unknown result type (might be due to invalid IL or missing references)
		dst.HumanoidBone = src.HumanoidBone;
		dst.LocalScaling = src.LocalScaling;
		dst.LocalRotation = src.LocalRotation;
		dst.LocalTranslation = src.LocalTranslation;
		foreach (Node child in src.Children)
		{
			Node node = new Node(child.Name);
			dst.Add(node);
			CopyTraverse(child, node);
		}
	}

	public Humanoid CopyNodes()
	{
		Node node = new Node(Hips.Name);
		CopyTraverse(Hips, node);
		return new Humanoid(node);
	}

	public (bool, string) Y180()
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		StringBuilder stringBuilder = new StringBuilder();
		Hips.LocalRotation = Quaternion.Euler(0f, MathFWrap.PI, 0f);
		Hips.CalcWorldMatrix();
		return (true, stringBuilder.ToString());
	}

	public (bool, string) MakeTPose()
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_007c: 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_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
		StringBuilder stringBuilder = new StringBuilder();
		bool item = false;
		Vector3 val = Vector3.Cross(Vector3.Normalize(LeftLeg.Upper.Translation - RightLeg.Upper.Translation), Vector3.up);
		if (Vector3.Dot(val, -Vector3.forward) < 0.9f)
		{
			Hips.RotateFromTo(val, -Vector3.forward);
			item = true;
		}
		if (Vector3.Dot(LeftArm.Direction, -Vector3.right) < 0.9f)
		{
			LeftArm.DirectTo(-Vector3.right);
			stringBuilder.Append("(fix left arm)");
			item = true;
		}
		if (Vector3.Dot(RightArm.Direction, Vector3.right) < 0.9f)
		{
			RightArm.DirectTo(Vector3.right);
			stringBuilder.Append("(fix right arm)");
			item = true;
		}
		Hips.CalcWorldMatrix();
		return (item, stringBuilder.ToString());
	}

	public void RetargetTo(Humanoid srcTPose, Humanoid dst)
	{
		//IL_0030: 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_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		using (IEnumerator<KeyValuePair<HumanoidBones, Node>> enumerator = GetEnumerator())
		{
			while (enumerator.MoveNext())
			{
				KeyValuePair<HumanoidBones, Node> current = enumerator.Current;
				Node node = srcTPose[current.Key];
				if (dst.TryGetValue(current.Key, out var value))
				{
					Quaternion rotation = node.Rotation;
					value.Rotation = current.Value.Rotation * Quaternion.Inverse(rotation);
				}
				else
				{
					Console.WriteLine($"{current.Key} not found");
				}
			}
		}
		dst.Hips.CalcWorldMatrix();
	}

	public void Add(KeyValuePair<HumanoidBones, Node> item)
	{
		Add(item.Key, item.Value);
	}

	public void Add(HumanoidBones key, Node node)
	{
		if (key == HumanoidBones.unknown)
		{
			throw new ArgumentException();
		}
		node.HumanoidBone = key;
		switch (node.HumanoidBone.Value)
		{
		case HumanoidBones.hips:
			Hips = node;
			break;
		case HumanoidBones.spine:
			Spine = node;
			break;
		case HumanoidBones.chest:
			Chest = node;
			break;
		case HumanoidBones.upperChest:
			UpperChest = node;
			break;
		case HumanoidBones.neck:
			Neck = node;
			break;
		case HumanoidBones.head:
			Head.Head = node;
			break;
		case HumanoidBones.jaw:
			Head.Jaw = node;
			break;
		case HumanoidBones.leftEye:
			Head.LeftEye = node;
			break;
		case HumanoidBones.rightEye:
			Head.RightEye = node;
			break;
		case HumanoidBones.leftShoulder:
			LeftArm.Shoulder = node;
			break;
		case HumanoidBones.leftUpperArm:
			LeftArm.Upper = node;
			break;
		case HumanoidBones.leftLowerArm:
			LeftArm.Lower = node;
			break;
		case HumanoidBones.leftHand:
			LeftArm.Hand = node;
			break;
		case HumanoidBones.rightShoulder:
			RightArm.Shoulder = node;
			break;
		case HumanoidBones.rightUpperArm:
			RightArm.Upper = node;
			break;
		case HumanoidBones.rightLowerArm:
			RightArm.Lower = node;
			break;
		case HumanoidBones.rightHand:
			RightArm.Hand = node;
			break;
		case HumanoidBones.leftUpperLeg:
			LeftLeg.Upper = node;
			break;
		case HumanoidBones.leftLowerLeg:
			LeftLeg.Lower = node;
			break;
		case HumanoidBones.leftFoot:
			LeftLeg.Foot = node;
			break;
		case HumanoidBones.leftToes:
			LeftLeg.Toe = node;
			break;
		case HumanoidBones.rightUpperLeg:
			RightLeg.Upper = node;
			break;
		case HumanoidBones.rightLowerLeg:
			RightLeg.Lower = node;
			break;
		case HumanoidBones.rightFoot:
			RightLeg.Foot = node;
			break;
		case HumanoidBones.rightToes:
			RightLeg.Toe = node;
			break;
		case HumanoidBones.leftThumbMetacarpal:
			LeftFingers.Thumb.Metacarpal = node;
			break;
		case HumanoidBones.leftThumbProximal:
			LeftFingers.Thumb.Proximal = node;
			break;
		case HumanoidBones.leftThumbDistal:
			LeftFingers.Thumb.Distal = node;
			break;
		case HumanoidBones.leftIndexProximal:
			LeftFingers.Index.Proximal = node;
			break;
		case HumanoidBones.leftIndexIntermediate:
			LeftFingers.Index.Intermediate = node;
			break;
		case HumanoidBones.leftIndexDistal:
			LeftFingers.Index.Distal = node;
			break;
		case HumanoidBones.leftMiddleProximal:
			LeftFingers.Middle.Proximal = node;
			break;
		case HumanoidBones.leftMiddleIntermediate:
			LeftFingers.Middle.Intermediate = node;
			break;
		case HumanoidBones.leftMiddleDistal:
			LeftFingers.Middle.Distal = node;
			break;
		case HumanoidBones.leftRingProximal:
			LeftFingers.Ring.Proximal = node;
			break;
		case HumanoidBones.leftRingIntermediate:
			LeftFingers.Ring.Intermediate = node;
			break;
		case HumanoidBones.leftRingDistal:
			LeftFingers.Ring.Distal = node;
			break;
		case HumanoidBones.leftLittleProximal:
			LeftFingers.Little.Proximal = node;
			break;
		case HumanoidBones.leftLittleIntermediate:
			LeftFingers.Little.Intermediate = node;
			break;
		case HumanoidBones.leftLittleDistal:
			LeftFingers.Little.Distal = node;
			break;
		case HumanoidBones.rightThumbMetacarpal:
			RightFingers.Thumb.Metacarpal = node;
			break;
		case HumanoidBones.rightThumbProximal:
			RightFingers.Thumb.Proximal = node;
			break;
		case HumanoidBones.rightThumbDistal:
			RightFingers.Thumb.Distal = node;
			break;
		case HumanoidBones.rightIndexProximal:
			RightFingers.Index.Proximal = node;
			break;
		case HumanoidBones.rightIndexIntermediate:
			RightFingers.Index.Intermediate = node;
			break;
		case HumanoidBones.rightIndexDistal:
			RightFingers.Index.Distal = node;
			break;
		case HumanoidBones.rightMiddleProximal:
			RightFingers.Middle.Proximal = node;
			break;
		case HumanoidBones.rightMiddleIntermediate:
			RightFingers.Middle.Intermediate = node;
			break;
		case HumanoidBones.rightMiddleDistal:
			RightFingers.Middle.Distal = node;
			break;
		case HumanoidBones.rightRingProximal:
			RightFingers.Ring.Proximal = node;
			break;
		case HumanoidBones.rightRingIntermediate:
			RightFingers.Ring.Intermediate = node;
			break;
		case HumanoidBones.rightRingDistal:
			RightFingers.Ring.Distal = node;
			break;
		case HumanoidBones.rightLittleProximal:
			RightFingers.Little.Proximal = node;
			break;
		case HumanoidBones.rightLittleIntermediate:
			RightFingers.Little.Intermediate = node;
			break;
		case HumanoidBones.rightLittleDistal:
			RightFingers.Little.Distal = node;
			break;
		default:
			throw new NotImplementedException();
		}
	}

	public bool ContainsKey(HumanoidBones key)
	{
		Node value;
		return TryGetValue(key, out value);
	}

	public bool Remove(HumanoidBones key)
	{
		if (!ContainsKey(key))
		{
			return false;
		}
		Add(key, null);
		return true;
	}

	public bool TryGetValue(HumanoidBones key, out Node value)
	{
		switch (key)
		{
		case HumanoidBones.hips:
			value = Hips;
			return true;
		case HumanoidBones.spine:
			value = Spine;
			return true;
		case HumanoidBones.chest:
			value = Chest;
			return true;
		case HumanoidBones.upperChest:
			value = UpperChest;
			return true;
		case HumanoidBones.neck:
			value = Neck;
			return true;
		case HumanoidBones.head:
			value = Head.Head;
			return true;
		case HumanoidBones.jaw:
			value = Head.Jaw;
			return true;
		case HumanoidBones.leftEye:
			value = Head.LeftEye;
			return true;
		case HumanoidBones.rightEye:
			value = Head.RightEye;
			return true;
		case HumanoidBones.leftShoulder:
			value = LeftArm.Shoulder;
			return true;
		case HumanoidBones.leftUpperArm:
			value = LeftArm.Upper;
			return true;
		case HumanoidBones.leftLowerArm:
			value = LeftArm.Lower;
			return true;
		case HumanoidBones.leftHand:
			value = LeftArm.Hand;
			return true;
		case HumanoidBones.rightShoulder:
			value = RightArm.Shoulder;
			return true;
		case HumanoidBones.rightUpperArm:
			value = RightArm.Upper;
			return true;
		case HumanoidBones.rightLowerArm:
			value = RightArm.Lower;
			return true;
		case HumanoidBones.rightHand:
			value = RightArm.Hand;
			return true;
		case HumanoidBones.leftUpperLeg:
			value = LeftLeg.Upper;
			return true;
		case HumanoidBones.leftLowerLeg:
			value = LeftLeg.Lower;
			return true;
		case HumanoidBones.leftFoot:
			value = LeftLeg.Foot;
			return true;
		case HumanoidBones.leftToes:
			value = LeftLeg.Toe;
			return true;
		case HumanoidBones.rightUpperLeg:
			value = RightLeg.Upper;
			return true;
		case HumanoidBones.rightLowerLeg:
			value = RightLeg.Lower;
			return true;
		case HumanoidBones.rightFoot:
			value = RightLeg.Foot;
			return true;
		case HumanoidBones.rightToes:
			value = RightLeg.Toe;
			return true;
		case HumanoidBones.leftThumbMetacarpal:
			value = LeftFingers.Thumb.Metacarpal;
			return true;
		case HumanoidBones.leftThumbProximal:
			value = LeftFingers.Thumb.Proximal;
			return true;
		case HumanoidBones.leftThumbDistal:
			value = LeftFingers.Thumb.Distal;
			return true;
		case HumanoidBones.leftIndexProximal:
			value = LeftFingers.Index.Proximal;
			return true;
		case HumanoidBones.leftIndexIntermediate:
			value = LeftFingers.Index.Intermediate;
			return true;
		case HumanoidBones.leftIndexDistal:
			value = LeftFingers.Index.Distal;
			return true;
		case HumanoidBones.leftMiddleProximal:
			value = LeftFingers.Middle.Proximal;
			return true;
		case HumanoidBones.leftMiddleIntermediate:
			value = LeftFingers.Middle.Intermediate;
			return true;
		case HumanoidBones.leftMiddleDistal:
			value = LeftFingers.Middle.Distal;
			return true;
		case HumanoidBones.leftRingProximal:
			value = LeftFingers.Ring.Proximal;
			return true;
		case HumanoidBones.leftRingIntermediate:
			value = LeftFingers.Ring.Intermediate;
			return true;
		case HumanoidBones.leftRingDistal:
			value = LeftFingers.Ring.Distal;
			return true;
		case HumanoidBones.leftLittleProximal:
			value = LeftFingers.Little.Proximal;
			return true;
		case HumanoidBones.leftLittleIntermediate:
			value = LeftFingers.Little.Intermediate;
			return true;
		case HumanoidBones.leftLittleDistal:
			value = LeftFingers.Little.Distal;
			return true;
		case HumanoidBones.rightThumbProximal:
			value = LeftFingers.Thumb.Proximal;
			return true;
		case HumanoidBones.rightThumbMetacarpal:
			value = LeftFingers.Thumb.Metacarpal;
			return true;
		case HumanoidBones.rightThumbDistal:
			value = LeftFingers.Thumb.Distal;
			return true;
		case HumanoidBones.rightIndexProximal:
			value = LeftFingers.Index.Proximal;
			return true;
		case HumanoidBones.rightIndexIntermediate:
			value = LeftFingers.Index.Intermediate;
			return true;
		case HumanoidBones.rightIndexDistal:
			value = LeftFingers.Index.Distal;
			return true;
		case HumanoidBones.rightMiddleProximal:
			value = LeftFingers.Middle.Proximal;
			return true;
		case HumanoidBones.rightMiddleIntermediate:
			value = LeftFingers.Middle.Intermediate;
			return true;
		case HumanoidBones.rightMiddleDistal:
			value = LeftFingers.Middle.Distal;
			return true;
		case HumanoidBones.rightRingProximal:
			value = LeftFingers.Ring.Proximal;
			return true;
		case HumanoidBones.rightRingIntermediate:
			value = LeftFingers.Ring.Intermediate;
			return true;
		case HumanoidBones.rightRingDistal:
			value = LeftFingers.Ring.Distal;
			return true;
		case HumanoidBones.rightLittleProximal:
			value = LeftFingers.Little.Proximal;
			return true;
		case HumanoidBones.rightLittleIntermediate:
			value = LeftFingers.Little.Intermediate;
			return true;
		case HumanoidBones.rightLittleDistal:
			value = LeftFingers.Little.Distal;
			return true;
		default:
			value = null;
			return false;
		}
	}

	public void Clear()
	{
		HumanoidBones[] values = CachedEnum.GetValues<HumanoidBones>();
		foreach (HumanoidBones key in values)
		{
			Add(key, null);
		}
	}

	public IEnumerator<KeyValuePair<HumanoidBones, Node>> GetEnumerator()
	{
		if (Hips != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.hips, Hips);
		}
		if (Spine != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.spine, Spine);
		}
		if (Chest != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.chest, Chest);
		}
		if (UpperChest != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.upperChest, UpperChest);
		}
		if (Neck != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.neck, Neck);
		}
		if (Head.Head != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.head, Head.Head);
		}
		if (LeftArm.Shoulder != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftShoulder, LeftArm.Shoulder);
		}
		if (LeftArm.Upper != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftUpperArm, LeftArm.Upper);
		}
		if (LeftArm.Lower != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftLowerArm, LeftArm.Lower);
		}
		if (LeftArm.Hand != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftHand, LeftArm.Hand);
		}
		if (RightArm.Shoulder != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightShoulder, RightArm.Shoulder);
		}
		if (RightArm.Upper != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightUpperArm, RightArm.Upper);
		}
		if (RightArm.Lower != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightLowerArm, RightArm.Lower);
		}
		if (RightArm.Hand != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightHand, RightArm.Hand);
		}
		if (LeftLeg.Upper != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftUpperLeg, LeftLeg.Upper);
		}
		if (LeftLeg.Lower != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftLowerLeg, LeftLeg.Lower);
		}
		if (LeftLeg.Foot != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftFoot, LeftLeg.Foot);
		}
		if (RightLeg.Upper != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightUpperLeg, RightLeg.Upper);
		}
		if (RightLeg.Lower != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightLowerLeg, RightLeg.Lower);
		}
		if (RightLeg.Foot != null)
		{
			yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightFoot, RightLeg.Foot);
		}
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return GetEnumerator();
	}

	bool ICollection<KeyValuePair<HumanoidBones, Node>>.Contains(KeyValuePair<HumanoidBones, Node> item)
	{
		throw new NotImplementedException();
	}

	void ICollection<KeyValuePair<HumanoidBones, Node>>.CopyTo(KeyValuePair<HumanoidBones, Node>[] array, int arrayIndex)
	{
		throw new NotImplementedException();
	}

	bool ICollection<KeyValuePair<HumanoidBones, Node>>.Remove(KeyValuePair<HumanoidBones, Node> item)
	{
		throw new NotImplementedException();
	}
}
public class BoneRequiredAttribute : Attribute
{
}
public enum HumanoidBones
{
	unknown,
	[BoneRequired]
	hips,
	[BoneRequired]
	leftUpperLeg,
	[BoneRequired]
	rightUpperLeg,
	[BoneRequired]
	leftLowerLeg,
	[BoneRequired]
	rightLowerLeg,
	[BoneRequired]
	leftFoot,
	[BoneRequired]
	rightFoot,
	[BoneRequired]
	spine,
	chest,
	neck,
	[BoneRequired]
	head,
	leftShoulder,
	rightShoulder,
	[BoneRequired]
	leftUpperArm,
	[BoneRequired]
	rightUpperArm,
	[BoneRequired]
	leftLowerArm,
	[BoneRequired]
	rightLowerArm,
	[BoneRequired]
	leftHand,
	[BoneRequired]
	rightHand,
	leftToes,
	rightToes,
	leftEye,
	rightEye,
	jaw,
	leftThumbMetacarpal,
	leftThumbProximal,
	leftThumbDistal,
	leftIndexProximal,
	leftIndexIntermediate,
	leftIndexDistal,
	leftMiddleProximal,
	leftMiddleIntermediate,
	leftMiddleDistal,
	leftRingProximal,
	leftRingIntermediate,
	leftRingDistal,
	leftLittleProximal,
	leftLittleIntermediate,
	leftLittleDistal,
	rightThumbMetacarpal,
	rightThumbProximal,
	rightThumbDistal,
	rightIndexProximal,
	rightIndexIntermediate,
	rightIndexDistal,
	rightMiddleProximal,
	rightMiddleIntermediate,
	rightMiddleDistal,
	rightRingProximal,
	rightRingIntermediate,
	rightRingDistal,
	rightLittleProximal,
	rightLittleIntermediate,
	rightLittleDistal,
	upperChest
}
public static class SkeletonEstimator
{
	private struct Arm
	{
		public Node Shoulder;

		public Node UpperArm;

		public Node LowerArm;

		public Node Hand;
	}

	private struct Leg
	{
		public Node UpperLeg;

		public Node LowerLeg;

		public Node Foot;

		public Node Toes;
	}

	private static Dictionary<string, HumanoidBones> s_nameBoneMap = new Dictionary<string, HumanoidBones>
	{
		{
			"Spine1",
			HumanoidBones.chest
		},
		{
			"Spine2",
			HumanoidBones.upperChest
		},
		{
			"LeftShoulder",
			HumanoidBones.leftShoulder
		},
		{
			"LeftArm",
			HumanoidBones.leftUpperArm
		},
		{
			"LeftForeArm",
			HumanoidBones.leftLowerArm
		},
		{
			"RightShoulder",
			HumanoidBones.rightShoulder
		},
		{
			"RightArm",
			HumanoidBones.rightUpperArm
		},
		{
			"RightForeArm",
			HumanoidBones.rightLowerArm
		},
		{
			"LeftUpLeg",
			HumanoidBones.leftUpperLeg
		},
		{
			"LeftLeg",
			HumanoidBones.leftLowerLeg
		},
		{
			"LeftToeBase",
			HumanoidBones.leftToes
		},
		{
			"RightUpLeg",
			HumanoidBones.rightUpperLeg
		},
		{
			"RightLeg",
			HumanoidBones.rightLowerLeg
		},
		{
			"RightToeBase",
			HumanoidBones.rightToes
		}
	};

	private static Dictionary<string, HumanoidBones> s_nameBoneMapLA = new Dictionary<string, HumanoidBones>
	{
		{
			"Chest",
			HumanoidBones.spine
		},
		{
			"Chest2",
			HumanoidBones.chest
		},
		{
			"LeftCollar",
			HumanoidBones.leftShoulder
		},
		{
			"LeftShoulder",
			HumanoidBones.leftUpperArm
		},
		{
			"LeftElbow",
			HumanoidBones.leftLowerArm
		},
		{
			"LeftWrist",
			HumanoidBones.leftHand
		},
		{
			"RightCollar",
			HumanoidBones.rightShoulder
		},
		{
			"RightShoulder",
			HumanoidBones.rightUpperArm
		},
		{
			"RightElbow",
			HumanoidBones.rightLowerArm
		},
		{
			"RightWrist",
			HumanoidBones.rightHand
		},
		{
			"LeftHip",
			HumanoidBones.leftUpperLeg
		},
		{
			"LeftKnee",
			HumanoidBones.leftLowerLeg
		},
		{
			"LeftAnkle",
			HumanoidBones.leftFoot
		},
		{
			"RightHip",
			HumanoidBones.rightUpperLeg
		},
		{
			"RightKnee",
			HumanoidBones.rightLowerLeg
		},
		{
			"RightAnkle",
			HumanoidBones.rightFoot
		}
	};

	private static Dictionary<string, HumanoidBones> s_nameBoneMapAccad = new Dictionary<string, HumanoidBones>
	{
		{
			"root",
			HumanoidBones.hips
		},
		{
			"lowerback",
			HumanoidBones.spine
		},
		{
			"upperback",
			HumanoidBones.chest
		},
		{
			"thorax",
			HumanoidBones.upperChest
		},
		{
			"neck",
			HumanoidBones.neck
		},
		{
			"head",
			HumanoidBones.head
		},
		{
			"lshoulderjoint",
			HumanoidBones.leftShoulder
		},
		{
			"lhumerus",
			HumanoidBones.leftUpperArm
		},
		{
			"lradius",
			HumanoidBones.leftLowerArm
		},
		{
			"lhand",
			HumanoidBones.leftHand
		},
		{
			"rshoulderjoint",
			HumanoidBones.rightShoulder
		},
		{
			"rhumerus",
			HumanoidBones.rightUpperArm
		},
		{
			"rradius",
			HumanoidBones.rightLowerArm
		},
		{
			"rhand",
			HumanoidBones.rightHand
		},
		{
			"rfemur",
			HumanoidBones.rightUpperLeg
		},
		{
			"rtibia",
			HumanoidBones.rightLowerLeg
		},
		{
			"rfoot",
			HumanoidBones.rightFoot
		},
		{
			"rtoes",
			HumanoidBones.rightToes
		},
		{
			"lfemur",
			HumanoidBones.leftUpperLeg
		},
		{
			"ltibia",
			HumanoidBones.leftLowerLeg
		},
		{
			"lfoot",
			HumanoidBones.leftFoot
		},
		{
			"ltoes",
			HumanoidBones.leftToes
		}
	};

	private static HumanoidBones[] RequiredBones = new HumanoidBones[15]
	{
		HumanoidBones.hips,
		HumanoidBones.spine,
		HumanoidBones.head,
		HumanoidBones.leftUpperArm,
		HumanoidBones.leftLowerArm,
		HumanoidBones.leftHand,
		HumanoidBones.leftUpperLeg,
		HumanoidBones.leftLowerLeg,
		HumanoidBones.leftFoot,
		HumanoidBones.rightUpperArm,
		HumanoidBones.rightLowerArm,
		HumanoidBones.rightHand,
		HumanoidBones.rightUpperLeg,
		HumanoidBones.rightLowerLeg,
		HumanoidBones.rightFoot
	};

	private static Node GetRoot(IReadOnlyList<Node> bones)
	{
		Node[] array = bones.Where((Node x) => x.Parent == null).ToArray();
		if (array.Length != 1)
		{
			throw new Exception("Require unique root");
		}
		return array[0];
	}

	private static Node SelectBone(Func<Node, Node, bool> pred, Node parent)
	{
		IReadOnlyList<Node> children = parent.Children;
		if (children == null || children.Count == 0)
		{
			throw new Exception("no bones");
		}
		foreach (Node item in children)
		{
			if (pred(item, parent))
			{
				return item;
			}
		}
		throw new Exception("not found");
	}

	private static void GetSpineAndHips(Node hips, out Node spine, out Node leg_L, out Node leg_R)
	{
		if (hips.Children.Count != 3)
		{
			throw new Exception("Hips require 3 children");
		}
		spine = SelectBone((Node l, Node r) => l.CenterOfDescendant().y > r.SkeletonLocalPosition.y, hips);
		Node s = spine;
		try
		{
			leg_L = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().x < r.SkeletonLocalPosition.x, hips);
			leg_R = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().x > r.SkeletonLocalPosition.x, hips);
		}
		catch (Exception)
		{
			leg_L = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().z < r.SkeletonLocalPosition.z, hips);
			leg_R = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().z > r.SkeletonLocalPosition.z, hips);
		}
	}

	private static void GetNeckAndArms(Node chest, out Node neck, out Node arm_L, out Node arm_R, Func<Vector3, Vector3, bool> isLeft)
	{
		if (chest.Children.Count != 3)
		{
			throw new Exception("Chest require 3 children");
		}
		neck = SelectBone((Node l, Node r) => l.CenterOfDescendant().y > r.SkeletonLocalPosition.y, chest);
		Node i = neck;
		arm_L = SelectBone((Node l, Node r) => !l.Equals(i) && isLeft(l.CenterOfDescendant(), r.SkeletonLocalPosition), chest);
		arm_R = SelectBone((Node l, Node r) => !l.Equals(i) && !isLeft(l.CenterOfDescendant(), r.SkeletonLocalPosition), chest);
	}

	private static Arm GetArm(Node shoulder)
	{
		Node[] array = shoulder.Traverse().ToArray();
		switch (array.Length)
		{
		case 0:
		case 1:
		case 2:
			throw new NotImplementedException();
		case 3:
		{
			Arm result = default(Arm);
			result.UpperArm = array[0];
			result.LowerArm = array[1];
			result.Hand = array[2];
			return result;
		}
		default:
		{
			Arm result = default(Arm);
			result.Shoulder = array[0];
			result.UpperArm = array[1];
			result.LowerArm = array[2];
			result.Hand = array[3];
			return result;
		}
		}
	}

	private static Leg GetLeg(Node leg)
	{
		Node[] array = (from x in leg.Traverse()
			where string.IsNullOrEmpty(x.Name) || !x.Name.ToLower().Contains("buttock")
			select x).ToArray();
		switch (array.Length)
		{
		case 0:
		case 1:
		case 2:
			throw new NotImplementedException();
		case 3:
		{
			Leg result = default(Leg);
			result.UpperLeg = array[0];
			result.LowerLeg = array[1];
			result.Foot = array[2];
			return result;
		}
		default:
		{
			Leg result = default(Leg);
			result.UpperLeg = array[^4];
			result.LowerLeg = array[^3];
			result.Foot = array[^2];
			result.Toes = array[^1];
			return result;
		}
		}
	}

	public static Dictionary<HumanoidBones, Node> DetectByName(Node root, Dictionary<string, HumanoidBones> map)
	{
		Dictionary<HumanoidBones, Node> dictionary = new Dictionary<HumanoidBones, Node>();
		foreach (Node item in root.Traverse())
		{
			HumanoidBones result;
			if (map.TryGetValue(item.Name, out var value))
			{
				if (value != 0)
				{
					dictionary.Add(value, item);
				}
			}
			else if (Enum.TryParse<HumanoidBones>(item.Name, ignoreCase: true, out result))
			{
				value = result;
				dictionary.Add(value, item);
			}
		}
		return dictionary;
	}

	public static Dictionary<HumanoidBones, Node> DetectByPosition(Node root)
	{
		//IL_00b8: 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)
		Node node = root.Traverse().First((Node x) => x.Children.Where((Node y) => y.Traverse().Count() >= 3).Count() >= 3);
		GetSpineAndHips(node, out var spine, out var leg_L, out var leg_R);
		if (leg_L.Equals(leg_R))
		{
			throw new Exception();
		}
		Leg leg = GetLeg(leg_L);
		Leg leg2 = GetLeg(leg_R);
		List<Node> list = new List<Node>();
		foreach (Node item in spine.Traverse())
		{
			list.Add(item);
			if (item.Children.Count == 3)
			{
				break;
			}
		}
		Func<Vector3, Vector3, bool> func = null;
		GetNeckAndArms(isLeft: (leg.UpperLeg.SkeletonLocalPosition.z != leg2.UpperLeg.SkeletonLocalPosition.z) ? ((Func<Vector3, Vector3, bool>)((Vector3 l, Vector3 r) => l.z < r.z)) : ((Func<Vector3, Vector3, bool>)((Vector3 l, Vector3 r) => l.x < r.x)), chest: list.Last(), neck: out var neck, arm_L: out var arm_L, arm_R: out var arm_R);
		Arm arm = GetArm(arm_L);
		Arm arm2 = GetArm(arm_R);
		Node[] array = neck.Traverse().ToArray();
		Dictionary<HumanoidBones, Node> skeleton = new Dictionary<HumanoidBones, Node>();
		Action<HumanoidBones, Node> action = delegate(HumanoidBones b, Node t)
		{
			if (t != null)
			{
				t.HumanoidBone = b;
				skeleton[b] = t;
			}
		};
		action(HumanoidBones.hips, node);
		switch (list.Count)
		{
		case 0:
			throw new Exception();
		case 1:
			action(HumanoidBones.spine, list[0]);
			break;
		case 2:
			action(HumanoidBones.spine, list[0]);
			action(HumanoidBones.chest, list[1]);
			break;
		case 3:
			action(HumanoidBones.spine, list[0]);
			action(HumanoidBones.chest, list[1]);
			action(HumanoidBones.upperChest, list[2]);
			break;
		default:
			action(HumanoidBones.spine, list[0]);
			action(HumanoidBones.chest, list[1]);
			action(HumanoidBones.upperChest, list.Last());
			break;
		}
		switch (array.Length)
		{
		case 0:
			throw new Exception();
		case 1:
			action(HumanoidBones.head, array[0]);
			break;
		case 2:
			action(HumanoidBones.neck, array[0]);
			action(HumanoidBones.head, array[1]);
			break;
		default:
			action(HumanoidBones.neck, array[0]);
			action(HumanoidBones.head, array.Where((Node x) => x.Parent.Children.Count == 1).Last());
			break;
		}
		action(HumanoidBones.leftUpperLeg, leg.UpperLeg);
		action(HumanoidBones.leftLowerLeg, leg.LowerLeg);
		action(HumanoidBones.leftFoot, leg.Foot);
		action(HumanoidBones.leftToes, leg.Toes);
		action(HumanoidBones.rightUpperLeg, leg2.UpperLeg);
		action(HumanoidBones.rightLowerLeg, leg2.LowerLeg);
		action(HumanoidBones.rightFoot, leg2.Foot);
		action(HumanoidBones.rightToes, leg2.Toes);
		action(HumanoidBones.leftShoulder, arm.Shoulder);
		action(HumanoidBones.leftUpperArm, arm.UpperArm);
		action(HumanoidBones.leftLowerArm, arm.LowerArm);
		action(HumanoidBones.leftHand, arm.Hand);
		action(HumanoidBones.rightShoulder, arm2.Shoulder);
		action(HumanoidBones.rightUpperArm, arm2.UpperArm);
		action(HumanoidBones.rightLowerArm, arm2.LowerArm);
		action(HumanoidBones.rightHand, arm2.Hand);
		return skeleton;
	}

	private static bool HasAllHumanRequiredBone(Dictionary<HumanoidBones, Node> dict)
	{
		HumanoidBones[] requiredBones = RequiredBones;
		foreach (HumanoidBones key in requiredBones)
		{
			if (!dict.ContainsKey(key))
			{
				return false;
			}
		}
		return true;
	}

	private static Dictionary<HumanoidBones, Node> _Detect(Node root)
	{
		List<Dictionary<HumanoidBones, Node>> list = new List<Dictionary<HumanoidBones, Node>>();
		Dictionary<string, HumanoidBones>[] array = new Dictionary<string, HumanoidBones>[3] { s_nameBoneMap, s_nameBoneMapLA, s_nameBoneMapAccad };
		foreach (Dictionary<string, HumanoidBones> map in array)
		{
			try
			{
				Dictionary<HumanoidBones, Node> dictionary = DetectByName(root, map);
				if (dictionary != null)
				{
					list.Add(dictionary);
				}
			}
			catch (Exception)
			{
			}
		}
		foreach (Dictionary<HumanoidBones, Node> item in list.OrderByDescending((Dictionary<HumanoidBones, Node> x) => x.Count))
		{
			if (HasAllHumanRequiredBone(item))
			{
				return item;
			}
		}
		return DetectByPosition(root);
	}

	public static Dictionary<HumanoidBones, Node> Detect(Node root)
	{
		try
		{
			Dictionary<HumanoidBones, Node> dictionary = _Detect(root);
			foreach (KeyValuePair<HumanoidBones, Node> item in dictionary)
			{
				item.Value.HumanoidBone = item.Key;
			}
			return dictionary;
		}
		catch
		{
			return null;
		}
	}
}
internal struct BoneWeight
{
	public int boneIndex0;

	public int boneIndex1;

	public int boneIndex2;

	public int boneIndex3;

	public float weight0;

	public float weight1;

	public float weight2;

	public float weight3;
}
internal class MeshBuilder
{
	public static BoneHeadTail[] Bones = new BoneHeadTail[21]
	{
		new BoneHeadTail(HumanoidBones.hips, HumanoidBones.spine, 0.1f, 0.06f),
		new BoneHeadTail(HumanoidBones.spine, HumanoidBones.chest),
		new BoneHeadTail(HumanoidBones.chest, HumanoidBones.neck, 0.1f, 0.06f),
		new BoneHeadTail(HumanoidBones.neck, HumanoidBones.head, 0.03f, 0.03f),
		new BoneHeadTail(HumanoidBones.head, new Vector3(0f, 0.1f, 0f), 0.1f, 0.1f),
		new BoneHeadTail(HumanoidBones.leftShoulder, HumanoidBones.leftUpperArm),
		new BoneHeadTail(HumanoidBones.leftUpperArm, HumanoidBones.leftLowerArm),
		new BoneHeadTail(HumanoidBones.leftLowerArm, HumanoidBones.leftHand),
		new BoneHeadTail(HumanoidBones.leftHand, new Vector3(-0.1f, 0f, 0f)),
		new BoneHeadTail(HumanoidBones.leftUpperLeg, HumanoidBones.leftLowerLeg),
		new BoneHeadTail(HumanoidBones.leftLowerLeg, HumanoidBones.leftFoot),
		new BoneHeadTail(HumanoidBones.leftFoot, HumanoidBones.leftToes),
		new BoneHeadTail(HumanoidBones.leftToes, new Vector3(0f, 0f, 0.1f)),
		new BoneHeadTail(HumanoidBones.rightShoulder, HumanoidBones.rightUpperArm),
		new BoneHeadTail(HumanoidBones.rightUpperArm, HumanoidBones.rightLowerArm),
		new BoneHeadTail(HumanoidBones.rightLowerArm, HumanoidBones.rightHand),
		new BoneHeadTail(HumanoidBones.rightHand, new Vector3(0.1f, 0f, 0f)),
		new BoneHeadTail(HumanoidBones.rightUpperLeg, HumanoidBones.rightLowerLeg),
		new BoneHeadTail(HumanoidBones.rightLowerLeg, HumanoidBones.rightFoot),
		new BoneHeadTail(HumanoidBones.rightFoot, HumanoidBones.rightToes),
		new BoneHeadTail(HumanoidBones.rightToes, new Vector3(0f, 0f, 0.1f))
	};

	private List<Vector3> m_positioins = new List<Vector3>();

	private List<int> m_indices = new List<int>();

	private List<BoneWeight> m_boneWeights = new List<BoneWeight>();

	public void Build(List<Node> bones)
	{
		//IL_0099: 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)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: 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)
		BoneHeadTail[] bones2 = Bones;
		for (int i = 0; i < bones2.Length; i++)
		{
			BoneHeadTail headTail = bones2[i];
			Node node = bones.FirstOrDefault((Node x) => x.HumanoidBone == headTail.Head);
			if (node != null)
			{
				Node node2 = null;
				if (headTail.Tail != 0)
				{
					node2 = bones.FirstOrDefault((Node x) => x.HumanoidBone == headTail.Tail);
				}
				if (node2 != null)
				{
					AddBone(node.SkeletonLocalPosition, node2.SkeletonLocalPosition, bones.IndexOf(node), headTail.XWidth, headTail.ZWidth);
				}
				else if (headTail.TailOffset != Vector3.zero)
				{
					AddBone(node.SkeletonLocalPosition, node.SkeletonLocalPosition + headTail.TailOffset, bones.IndexOf(node), headTail.XWidth, headTail.ZWidth);
				}
			}
			else
			{
				Console.Error.WriteLine($"{headTail.Head} not found");
			}
		}
	}

	private void AddBone(Vector3 head, Vector3 tail, int boneIndex, float xWidth, float zWidth)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: 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_0011: 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_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: 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)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: 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_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: 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)
		Vector3 val = tail - head;
		Vector3 normalized = ((Vector3)(ref val)).normalized;
		Vector3 val2;
		Vector3 val3;
		if (Vector3.Dot(normalized, Vector3.forward) >= 1f)
		{
			val2 = Vector3.right;
			val3 = -Vector3.up;
		}
		else
		{
			val2 = Vector3.Normalize(Vector3.Cross(normalized, Vector3.forward));
			val3 = Vector3.forward;
		}
		AddBox((head + tail) * 0.5f, val2 * xWidth, (tail - head) * 0.5f, val3 * zWidth, boneIndex);
	}

	private void AddBox(Vector3 center, Vector3 xaxis, Vector3 yaxis, Vector3 zaxis, int boneIndex)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: 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_0009: 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_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: 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_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: 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_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: 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_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: 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_0069: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: 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_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: 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_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: 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_0091: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: 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_0098: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: 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)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: 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_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_00bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: 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_00c8: 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_00ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d4: 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_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ef: 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_00f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: 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_00fc: 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_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_010e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_0114: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Unknown result type (might be due to invalid IL or missing references)
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0122: Unknown result type (might be due to invalid IL or missing references)
		//IL_0127: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		//IL_012f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: 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_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		//IL_013c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0141: Unknown result type (might be due to invalid IL or missing references)
		//IL_0143: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: 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_014a: 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_0150: 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_0157: Unknown result type (might be due to invalid IL or missing references)
		//IL_0165: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: Unknown result type (might be due to invalid IL or missing references)
		//IL_0168: Unknown result type (might be due to invalid IL or missing references)
		//IL_016d: Unknown result type (might be due to invalid IL or missing references)
		//IL_016e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_0179: 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_017c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0181: Unknown result type (might be due to invalid IL or missing references)
		//IL_0182: Unknown result type (might be due to invalid IL or missing references)
		//IL_0187: Unknown result type (might be due to invalid IL or missing references)
		//IL_0188: Unknown result type (might be due to invalid IL or missing references)
		//IL_018d: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: 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_0196: Unknown result type (might be due to invalid IL or missing references)
		//IL_019b: Unknown result type (might be due to invalid IL or missing references)
		//IL_019c: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_01af: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01be: 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_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cc: 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_01d3: 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_01db: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e6: 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)
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f4: 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_01fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		//IL_0203: Unknown result type (might be due to invalid IL or missing references)
		//IL_0208: Unknown result type (might be due to invalid IL or missing references)
		//IL_0209: Unknown result type (might be due to invalid IL or missing references)
		AddQuad(center - yaxis - xaxis - zaxis, center - yaxis + xaxis - zaxis, center - yaxis + xaxis + zaxis, center - yaxis - xaxis + zaxis, boneIndex);
		AddQuad(center + yaxis - xaxis - zaxis, center + yaxis + xaxis - zaxis, center + yaxis + xaxis + zaxis, center + yaxis - xaxis + zaxis, boneIndex, reverse: true);
		AddQuad(center - xaxis - yaxis - zaxis, center - xaxis + yaxis - zaxis, center - xaxis + yaxis + zaxis, center - xaxis - yaxis + zaxis, boneIndex, reverse: true);
		AddQuad(center + xaxis - yaxis - zaxis, center + xaxis + yaxis - zaxis, center + xaxis + yaxis + zaxis, center + xaxis - yaxis + zaxis, boneIndex);
		AddQuad(center - zaxis - xaxis - yaxis, center - zaxis + xaxis - yaxis, center - zaxis + xaxis + yaxis, center - zaxis - xaxis + yaxis, boneIndex, reverse: true);
		AddQuad(center + zaxis - xaxis - yaxis, center + zaxis + xaxis - yaxis, center + zaxis + xaxis + yaxis, center + zaxis - xaxis + yaxis, boneIndex);
	}

	private void AddQuad(Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3, int boneIndex, bool reverse = false)
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: 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_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: 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_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Unknown result type (might be due to invalid IL or missing references)
		//IL_008b: 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_00b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		int count = m_positioins.Count;
		if (float.IsNaN(v0.x) || float.IsNaN(v0.y) || float.IsNaN(v0.z))
		{
			throw new Exception();
		}
		m_positioins.Add(v0);
		if (float.IsNaN(v1.x) || float.IsNaN(v1.y) || float.IsNaN(v1.z))
		{
			throw new Exception();
		}
		m_positioins.Add(v1);
		if (float.IsNaN(v2.x) || float.IsNaN(v2.y) || float.IsNaN(v2.z))
		{
			throw new Exception();
		}
		m_positioins.Add(v2);
		if (float.IsNaN(v3.x) || float.IsNaN(v3.y) || float.IsNaN(v3.z))
		{
			throw new Exception();
		}
		m_positioins.Add(v3);
		BoneWeight boneWeight = default(BoneWeight);
		boneWeight.boneIndex0 = boneIndex;
		boneWeight.weight0 = 1f;
		BoneWeight item = boneWeight;
		m_boneWeights.Add(item);
		m_boneWeights.Add(item);
		m_boneWeights.Add(item);
		m_boneWeights.Add(item);
		if (reverse)
		{
			m_indices.Add(count + 3);
			m_indices.Add(count + 2);
			m_indices.Add(count + 1);
			m_indices.Add(count + 1);
			m_indices.Add(count);
			m_indices.Add(count + 3);
		}
		else
		{
			m_indices.Add(count);
			m_indices.Add(count + 1);
			m_indices.Add(count + 2);
			m_indices.Add(count + 2);
			m_indices.Add(count + 3);
			m_indices.Add(count);
		}
	}
}
internal struct BoneHeadTail
{
	public HumanoidBones Head;

	public HumanoidBones Tail;

	public Vector3 TailOffset;

	public float XWidth;

	public float ZWidth;

	public BoneHeadTail(HumanoidBones head, HumanoidBones tail, float xWidth = 0.05f, float zWidth = 0.05f)
	{
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		Head = head;
		Tail = tail;
		TailOffset = Vector3.zero;
		XWidth = xWidth;
		ZWidth = zWidth;
	}

	public BoneHeadTail(HumanoidBones head, Vector3 tailOffset, float xWidth = 0.05f, float zWidth = 0.05f)
	{
		//IL_000f: 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)
		Head = head;
		Tail = HumanoidBones.unknown;
		TailOffset = tailOffset;
		XWidth = xWidth;
		ZWidth = zWidth;
	}
}
public static class MathFWrap
{
	public static readonly float PI = MathF.PI;

	public static float Clamp(float src, float min, float max)
	{
		return Math.Max(Math.Min(src, min), max);
	}

	public static int Clamp(int src, int min, int max)
	{
		return Math.Max(Math.Min(src, min), max);
	}
}
public enum TopologyType
{
	Points,
	Lines,
	LineLoop,
	LineStrip,
	Triangles,
	TriangleStrip,
	TriangleFan
}
public struct Triangle
{
	public int Vertex0;

	public int Vertex1;

	public int Vertex2;

	public Triangle(int v0, int v1, int v2)
	{
		Vertex0 = v0;
		Vertex1 = v1;
		Vertex2 = v2;
	}
}
public class Submesh
{
	public int Offset;

	public int DrawCount;

	public int Material;

	public override string ToString()
	{
		return $"{Material}({DrawCount})";
	}

	public Submesh(int material)
		: this(0, 0, material)
	{
	}

	public Submesh(int offset, int drawCount, int material)
	{
		Offset = offset;
		DrawCount = drawCount;
		Material = material;
	}
}
public class Mesh
{
	public VertexBuffer VertexBuffer;

	public BufferAccessor IndexBuffer;

	public TopologyType Topology = TopologyType.Triangles;

	public List<MorphTarget> MorphTargets = new List<MorphTarget>();

	public List<Submesh> Submeshes { get; private set; } = new List<Submesh>();


	public override string ToString()
	{
		StringBuilder stringBuilder = new StringBuilder();
		foreach (string item in VertexBuffer.Select((KeyValuePair<string, BufferAccessor> x) => x.Key))
		{
			stringBuilder.Append("[" + item + "]");
		}
		if (IndexBuffer != null)
		{
			if (Topology == TopologyType.Triangles)
			{
				stringBuilder.Append($" {IndexBuffer.Count / 3} tris");
			}
			else
			{
				stringBuilder.Append($" topology: {Topology}");
			}
		}
		if (MorphTargets.Any())
		{
			stringBuilder.Append($", {MorphTargets.Count} morphs");
			foreach (KeyValuePair<string, BufferAccessor> item2 in MorphTargets[0].VertexBuffer)
			{
				stringBuilder.Append("[" + item2.Key + "]");
			}
		}
		int num = VertexBuffer.ByteLength + IndexBuffer.ByteLength + MorphTargets.Sum((MorphTarget x) => x.VertexBuffer.ByteLength);
		stringBuilder.Append($": expected {num / 1000 / 1000} MB");
		return stringBuilder.ToString();
	}

	public Mesh(TopologyType topology = TopologyType.Triangles)
	{
		Topology = topology;
	}

	public void ApplyRotationAndScaling(Matrix4x4 m)
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: 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_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: 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_007d: Unknown result type (might be due to invalid IL or missing references)
		((Matrix4x4)(ref m)).SetColumn(3, new Vector4(0f, 0f, 0f, 1f));
		NativeArray<Vector3> val = VertexBuffer.Positions.Bytes.Reinterpret<Vector3>(1);
		NativeArray<Vector3> val2 = VertexBuffer.Normals.Bytes.Reinterpret<Vector3>(1);
		for (int i = 0; i < val.Length; i++)
		{
			val[i] = ((Matrix4x4)(ref m)).MultiplyPoint(val[i]);
			val2[i] = ((Matrix4x4)(ref m)).MultiplyVector(val2[i]);
		}
	}
}
public class MeshGroup : GltfId
{
	public readonly string Name;

	public readonly List<Mesh> Meshes = new List<Mesh>();

	public Skin Skin;

	public bool HasSharedBuffer
	{
		get
		{
			if (Meshes.Count == 1)
			{
				return Meshes[0].Submeshes.Count > 1;
			}
			return false;
		}
	}

	public override string ToString()
	{
		StringBuilder stringBuilder = new StringBuilder();
		stringBuilder.Append(Name);
		if (Skin != null)
		{
			stringBuilder.Append("(skinned)");
		}
		bool flag = true;
		foreach (Mesh mesh in Meshes)
		{
			if (flag)
			{
				flag = false;
			}
			else
			{
				stringBuilder.Append(", ");
			}
			stringBuilder.Append(mesh);
		}
		return stringBuilder.ToString();
	}

	public MeshGroup(string name)
	{
		Name = name;
	}
}
public class Model
{
	private struct Reverser
	{
		public Action<BufferAccessor> ReverseBuffer;

		public Func<Vector3, Vector3> ReverseVector3;

		public Func<Matrix4x4, Matrix4x4> ReverseMatrix;
	}

	public Coordinates Coordinates;

	public string AssetVersion = "2.0";

	public string AssetGenerator = "UniVRM-0.121.0";

	public string AssetCopyright;

	public string AssetMinVersion;

	public readonly List<object> Materials = new List<object>();

	public readonly List<Skin> Skins = new List<Skin>();

	public readonly List<MeshGroup> MeshGroups = new List<MeshGroup>();

	private Node m_root = new Node("__root__");

	public List<Node> Nodes = new List<Node>();

	public Node Root => m_root;

	private static Reverser ZReverser
	{
		get
		{
			Reverser result = default(Reverser);
			result.ReverseBuffer = ReverseZ;
			result.ReverseVector3 = (Vector3 v) => UnityExtensions.ReverseZ(v);
			result.ReverseMatrix = (Matrix4x4 m) => UnityExtensions.ReverseZ(m);
			return result;
		}
	}

	private static Reverser XReverser
	{
		get
		{
			Reverser result = default(Reverser);
			result.ReverseBuffer = ReverseX;
			result.ReverseVector3 = (Vector3 v) => UnityExtensions.ReverseX(v);
			result.ReverseMatrix = (Matrix4x4 m) => UnityExtensions.ReverseX(m);
			return result;
		}
	}

	public Model(Coordinates coordinates)
	{
		Coordinates = coordinates;
	}

	public void SetRoot(Node root)
	{
		m_root = root;
		Nodes.Clear();
		Nodes.AddRange(root.Traverse().Skip(1));
	}

	public Dictionary<HumanoidBones, Node> GetBoneMap()
	{
		return (from x in Root.Traverse()
			where x.HumanoidBone.HasValue
			select x).ToDictionary((Node x) => x.HumanoidBone.Value, (Node x) => x);
	}

	public override string ToString()
	{
		StringBuilder stringBuilder = new StringBuilder();
		stringBuilder.Append("[GLTF] generator: " + AssetGenerator + "\n");
		for (int i = 0; i < Materials.Count; i++)
		{
			object arg = Materials[i];
			stringBuilder.Append($"[Material#{i:00}] {arg}\n");
		}
		for (int j = 0; j < MeshGroups.Count; j++)
		{
			MeshGroup arg2 = MeshGroups[j];
			stringBuilder.Append($"[Mesh#{j:00}] {arg2}\n");
		}
		stringBuilder.Append($"[Node] {Nodes.Count} nodes\n");
		foreach (Skin skin in Skins)
		{
			stringBuilder.Append($"[Skin] {skin}\n");
		}
		return stringBuilder.ToString();
	}

	public bool CheckVrmHumanoid()
	{
		HashSet<HumanoidBones> hashSet = new HashSet<HumanoidBones>();
		foreach (Node node in Nodes)
		{
			if (node.HumanoidBone.HasValue)
			{
				if (hashSet.Contains(node.HumanoidBone.Value))
				{
					return false;
				}
				hashSet.Add(node.HumanoidBone.Value);
			}
		}
		IEnumerable<BoneRequiredAttribute[]> source = from bone in CachedEnum.GetValues<HumanoidBones>()
			select bone.GetType().GetField(bone.ToString()) into info
			select info.GetCustomAttributes(typeof(BoneRequiredAttribute), inherit: false) as BoneRequiredAttribute[] into attributes
			where attributes.Length != 0
			select attributes;
		if ((from humanoid in hashSet
			select humanoid.GetType().GetField(humanoid.ToString()) into info
			select info.GetCustomAttributes(typeof(BoneRequiredAttribute), inherit: false) as BoneRequiredAttribute[] into attributes
			where attributes.Length != 0
			select attributes).Count() != source.Count())
		{
			return false;
		}
		return true;
	}

	public static Node GetNode(Node root, string path)
	{
		string[] source = path.Split('/');
		IEnumerator<string> it = source.Select((string x) => x).GetEnumerator();
		Node node = root;
		while (it.MoveNext())
		{
			node = node.Children.First((Node x) => x.Name == it.Current);
		}
		return node;
	}

	public void ApplyRotationAndScale()
	{
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Unknown result type (might be due to invalid IL or missing references)
		Dictionary<Node, Vector3> dictionary = Nodes.ToDictionary((Node x) => x, (Node x) => x.Translation);
		foreach (Node item in Root.Traverse().Skip(1))
		{
			if (dictionary.TryGetValue(item, out var value))
			{
				Matrix4x4 m = Matrix4x4.Translate(value);
				item.SetMatrix(m, calcWorldMatrix: false);
			}
		}
	}

	public void NodeAdd(Node node, Node parent = null)
	{
		if (parent == null)
		{
			parent = Root;
		}
		parent.Add(node);
		if (Nodes.Contains(node))
		{
			throw new ArgumentException($"Nodes contain {node}");
		}
		Nodes.Add(node);
	}

	public void NodeRemove(Node remove)
	{
		foreach (Node node in Nodes)
		{
			if (node.Parent == remove)
			{
				remove.Remove(node);
			}
			if (remove.Parent == node)
			{
				node.Remove(remove);
			}
		}
		if (Root.Children.Contains(remove))
		{
			Root.Remove(remove);
		}
		Nodes.Remove(remove);
	}

	public string SkinningBake(INativeArrayManager arrayManager)
	{
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		foreach (Node node in Nodes)
		{
			MeshGroup meshGroup = node.MeshGroup;
			if (meshGroup == null)
			{
				continue;
			}
			if (meshGroup.Skin != null)
			{
				foreach (Mesh mesh in meshGroup.Meshes)
				{
					meshGroup.Skin.Skinning(arrayManager, mesh.VertexBuffer);
				}
				meshGroup.Skin.Root = null;
				meshGroup.Skin.InverseMatrices = null;
				continue;
			}
			foreach (Mesh mesh2 in meshGroup.Meshes)
			{
				mesh2.ApplyRotationAndScaling(node.Matrix);
			}
		}
		ApplyRotationAndScale();
		foreach (Node node2 in Nodes)
		{
			MeshGroup meshGroup2 = node2.MeshGroup;
			if (meshGroup2 == null)
			{
				continue;
			}
			foreach (Mesh mesh3 in meshGroup2.Meshes)
			{
				_ = mesh3;
				if (meshGroup2.Skin != null)
				{
					meshGroup2.Skin.CalcInverseMatrices(arrayManager);
				}
			}
		}
		return "SkinningBake";
	}

	private static void ReverseX(BufferAccessor ba)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Invalid comparison between Unknown and I4
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Invalid comparison between Unknown and I4
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Invalid comparison between Unknown and I4
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: 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_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: 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)
		if ((int)ba.ComponentType != 5126)
		{
			throw new Exception();
		}
		if ((int)ba.AccessorType == 2)
		{
			NativeArray<Vector3> val = ba.Bytes.Reinterpret<Vector3>(1);
			for (int i = 0; i < val.Length; i++)
			{
				val[i] = UnityExtensions.ReverseX(val[i]);
			}
			return;
		}
		if ((int)ba.AccessorType == 6)
		{
			NativeArray<Matrix4x4> val2 = ba.Bytes.Reinterpret<Matrix4x4>(1);
			for (int j = 0; j < val2.Length; j++)
			{
				val2[j] = UnityExtensions.ReverseX(val2[j]);
			}
			return;
		}
		throw new NotImplementedException();
	}

	private static void ReverseZ(BufferAccessor ba)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Invalid comparison between Unknown and I4
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Invalid comparison between Unknown and I4
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Invalid comparison between Unknown and I4
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: 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_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: 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)
		if ((int)ba.ComponentType != 5126)
		{
			throw new Exception();
		}
		if ((int)ba.AccessorType == 2)
		{
			NativeArray<Vector3> val = ba.Bytes.Reinterpret<Vector3>(1);
			for (int i = 0; i < val.Length; i++)
			{
				val[i] = UnityExtensions.ReverseZ(val[i]);
			}
			return;
		}
		if ((int)ba.AccessorType == 6)
		{
			NativeArray<Matrix4x4> val2 = ba.Bytes.Reinterpret<Matrix4x4>(1);
			for (int j = 0; j < val2.Length; j++)
			{
				val2[j] = UnityExtensions.ReverseZ(val2[j]);
			}
			return;
		}
		throw new NotImplementedException();
	}

	public void ConvertCoordinate(Coordinates coordinates, bool ignoreVrm = false)
	{
		if (Coordinates.Equals(coordinates))
		{
			return;
		}
		if (Coordinates.IsVrm0 && coordinates.IsUnity)
		{
			ReverseAxisAndFlipTriangle(ZReverser, ignoreVrm);
			UVVerticalFlip();
			Coordinates = coordinates;
			return;
		}
		if (Coordinates.IsUnity && coordinates.IsVrm0)
		{
			ReverseAxisAndFlipTriangle(ZReverser, ignoreVrm);
			UVVerticalFlip();
			Coordinates = coordinates;
			return;
		}
		if (Coordinates.IsVrm1 && coordinates.IsUnity)
		{
			ReverseAxisAndFlipTriangle(XReverser, ignoreVrm);
			UVVerticalFlip();
			Coordinates = coordinates;
			return;
		}
		if (Coordinates.IsUnity && coordinates.IsVrm1)
		{
			ReverseAxisAndFlipTriangle(XReverser, ignoreVrm);
			UVVerticalFlip();
			Coordinates = coordinates;
			return;
		}
		throw new NotImplementedException();
	}

	private void UVVerticalFlip()
	{
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: 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)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		foreach (MeshGroup meshGroup in MeshGroups)
		{
			foreach (Mesh mesh in meshGroup.Meshes)
			{
				BufferAccessor texCoords = mesh.VertexBuffer.TexCoords;
				if (texCoords != null)
				{
					NativeArray<Vector2> val = texCoords.Bytes.Reinterpret<Vector2>(1);
					for (int i = 0; i < val.Length; i++)
					{
						val[i] = UnityExtensions.UVVerticalFlip(val[i]);
					}
				}
			}
		}
	}

	private void ReverseAxisAndFlipTriangle(Reverser reverser, bool ignoreVrm)
	{
		//IL_0273: Unknown result type (might be due to invalid IL or missing references)
		//IL_0278: 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_00c5: 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_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Expected I4, but got Unknown
		//IL_010a: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		//IL_013d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c3: 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)
		HashSet<NativeArray<byte>> hashSet = new HashSet<NativeArray<byte>>();
		foreach (MeshGroup meshGroup in MeshGroups)
		{
			foreach (Mesh mesh in meshGroup.Meshes)
			{
				foreach (KeyValuePair<string, BufferAccessor> item in mesh.VertexBuffer)
				{
					string key = item.Key;
					BufferAccessor value = item.Value;
					if (key == "POSITION" || key == "NORMAL")
					{
						if (hashSet.Add(value.Bytes))
						{
							reverser.ReverseBuffer(value);
						}
					}
					else
					{
						_ = key == "TANGENT";
					}
				}
				if (hashSet.Add(mesh.IndexBuffer.Bytes))
				{
					AccessorValueType componentType = mesh.IndexBuffer.ComponentType;
					switch (componentType - 5121)
					{
					case 0:
						FlipTriangle(mesh.IndexBuffer.Bytes);
						break;
					case 2:
						FlipTriangle(mesh.IndexBuffer.Bytes.Reinterpret<ushort>(1));
						break;
					case 4:
						FlipTriangle(mesh.IndexBuffer.Bytes.Reinterpret<uint>(1));
						break;
					default:
						throw new NotImplementedException();
					}
				}
				foreach (MorphTarget morphTarget in mesh.MorphTargets)
				{
					foreach (KeyValuePair<string, BufferAccessor> item2 in morphTarget.VertexBuffer)
					{
						string key2 = item2.Key;
						BufferAccessor value2 = item2.Value;
						if ((key2 == "POSITION" || key2 == "NORMAL") && hashSet.Add(value2.Bytes))
						{
							reverser.ReverseBuffer(value2);
						}
						_ = key2 == "TANGENT";
					}
				}
			}
		}
		foreach (Node item3 in Root.Traverse().Skip(1))
		{
			item3.SetMatrix(reverser.ReverseMatrix(item3.Matrix), calcWorldMatrix: false);
		}
		foreach (Skin skin in Skins)
		{
			if (skin.InverseMatrices != null && hashSet.Add(skin.InverseMatrices.Bytes))
			{
				reverser.ReverseBuffer(skin.InverseMatrices);
			}
		}
	}

	private static void FlipTriangle(NativeArray<byte> indices)
	{
		for (int i = 0; i < indices.Length; i += 3)
		{
			byte b = indices[i + 2];
			indices[i + 2] = indices[i];
			indices[i] = b;
		}
	}

	private static void FlipTriangle(NativeArray<ushort> indices)
	{
		for (int i = 0; i < indices.Length; i += 3)
		{
			ushort num = indices[i + 2];
			indices[i + 2] = indices[i];
			indices[i] = num;
		}
	}

	private static void FlipTriangle(NativeArray<uint> indices)
	{
		for (int i = 0; i < indices.Length; i += 3)
		{
			uint num = indices[i + 2];
			indices[i + 2] = indices[i];
			indices[i] = num;
		}
	}
}
public class MorphTarget
{
	public readonly string Name;

	public VertexBuffer VertexBuffer;

	public override string ToString()
	{
		StringBuilder stringBuilder = new StringBuilder();
		stringBuilder.Append(Name);
		foreach (KeyValuePair<string, BufferAccessor> item in VertexBuffer)
		{
			stringBuilder.Append("[" + item.Key + "]");
		}
		return stringBuilder.ToString();
	}

	public MorphTarget(string name)
	{
		Name = name;
	}
}
public enum ChildMatrixMode
{
	KeepLocal,
	KeepWorld
}
public class Node : GltfId, IEnumerable<Node>, IEnumerable
{
	private static int s_nextUniqueId = 1;

	public readonly int UniqueID;

	public Vector3 LocalTranslationWithoutUpdate = Vector3.zero;

	public Quaternion LocalRotationWithoutUpdate = Quaternion.identity;

	public Vector3 LocalScalingWithoutUpdate = Vector3.one;

	private Matrix4x4 m_matrix = Matrix4x4.identity;

	private readonly List<Node> m_children = new List<Node>();

	public MeshGroup MeshGroup;

	private HumanoidBones? m_bone;

	public string Name { get; set; }

	public Vector3 LocalTranslation
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return LocalTranslationWithoutUpdate;
		}
		set
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: 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_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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)
			if (!(LocalTranslationWithoutUpdate == value))
			{
				LocalTranslationWithoutUpdate = value;
				CalcWorldMatrix((Parent != null) ? Parent.Matrix : Matrix4x4.identity);
			}
		}
	}

	public Quaternion LocalRotation
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return LocalRotationWithoutUpdate;
		}
		set
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: 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_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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)
			if (!(LocalRotationWithoutUpdate == value))
			{
				LocalRotationWithoutUpdate = value;
				CalcWorldMatrix((Parent != null) ? Parent.Matrix : Matrix4x4.identity);
			}
		}
	}

	public Vector3 LocalScaling
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return LocalScalingWithoutUpdate;
		}
		set
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: 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_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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)
			if (!(LocalScalingWithoutUpdate == value))
			{
				LocalScalingWithoutUpdate = value;
				CalcWorldMatrix((Parent != null) ? Parent.Matrix : Matrix4x4.identity);
			}
		}
	}

	public Matrix4x4 LocalMatrix => Matrix4x4.Translate(LocalTranslation) * Matrix4x4.Rotate(LocalRotation) * Matrix4x4.Scale(LocalScaling);

	public Matrix4x4 Matrix => m_matrix;

	public Quaternion Rotation
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			Matrix4x4 matrix = Matrix;
			return ((Matrix4x4)(ref matrix)).rotation;
		}
		set
		{
			//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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			if (Parent == null)
			{
				LocalRotation = value;
			}
			else
			{
				LocalRotation = Quaternion.Inverse(Parent.Rotation) * value;
			}
		}
	}

	public Matrix4x4 InverseMatrix
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			Matrix4x4 matrix = Matrix;
			return ((Matrix4x4)(ref matrix)).inverse;
		}
	}

	public Vector3 Translation
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			Matrix4x4 matrix = Matrix;
			return Vector4.op_Implicit(((Matrix4x4)(ref matrix)).GetColumn(3));
		}
		set
		{
			//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_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			if (Parent == null)
			{
				LocalTranslation = value;
				return;
			}
			Matrix4x4 inverseMatrix = Parent.InverseMatrix;
			LocalTranslation = ((Matrix4x4)(ref inverseMatrix)).MultiplyPoint(value);
		}
	}

	public Vector3 SkeletonLocalPosition
	{
		get
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return Translation;
		}
		set
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			Translation = value;
		}
	}

	public Node Parent { get; private set; }

	public Mesh Mesh => MeshGroup?.Meshes?[0];

	public HumanoidBones? HumanoidBone
	{
		get
		{
			return m_bone;
		}
		set
		{
			if (m_bone != value && value != HumanoidBones.unknown)
			{
				m_bone = value;
			}
		}
	}

	public IReadOnlyList<Node> Children => m_children;

	public event Action<Matrix4x4> MatrixUpdated;

	public Node(string name)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: 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_0022: 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)
		UniqueID = s_nextUniqueId++;
		Name = name;
	}

	public void SetLocalMatrix(Matrix4x4 value, bool calcWorldMatrix)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: 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_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_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		(LocalTranslationWithoutUpdate, LocalRotationWithoutUpdate, LocalScalingWithoutUpdate) = UnityExtensions.Decompose(value);

valheim_Data/Managed/VRMShaders.GLTF.IO.Runtime.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[2614]
		{
			0, 0, 0, 1, 0, 0, 0, 77, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 71, 76, 84,
			70, 92, 73, 79, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 65, 110, 105, 109, 97, 116, 105,
			111, 110, 92, 73, 109, 112, 111, 114, 116, 101,
			114, 92, 65, 110, 105, 109, 97, 116, 105, 111,
			110, 67, 108, 105, 112, 70, 97, 99, 116, 111,
			114, 121, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 62, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 92, 71, 76, 84, 70, 92, 73, 79, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 119,
			97, 105, 116, 67, 97, 108, 108, 101, 114, 92,
			73, 65, 119, 97, 105, 116, 67, 97, 108, 108,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 65, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 92, 71, 76, 84, 70, 92, 73, 79, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 119,
			97, 105, 116, 67, 97, 108, 108, 101, 114, 92,
			73, 109, 109, 101, 100, 105, 97, 116, 101, 67,
			97, 108, 108, 101, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 72, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 65, 119, 97, 105, 116, 67, 97, 108, 108,
			101, 114, 92, 78, 101, 120, 116, 70, 114, 97,
			109, 101, 84, 97, 115, 107, 83, 99, 104, 101,
			100, 117, 108, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 72, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 65, 119, 97, 105, 116, 67, 97, 108, 108,
			101, 114, 92, 82, 117, 110, 116, 105, 109, 101,
			79, 110, 108, 121, 65, 119, 97, 105, 116, 67,
			97, 108, 108, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 80, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 65, 119, 97, 105, 116, 67, 97, 108, 108,
			101, 114, 92, 82, 117, 110, 116, 105, 109, 101,
			79, 110, 108, 121, 78, 111, 84, 104, 114, 101,
			97, 100, 65, 119, 97, 105, 116, 67, 97, 108,
			108, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 74, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 83, 104, 97, 100, 101,
			114, 115, 92, 71, 76, 84, 70, 92, 73, 79,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			119, 97, 105, 116, 67, 97, 108, 108, 101, 114,
			92, 84, 105, 110, 121, 77, 97, 110, 97, 103,
			101, 100, 84, 97, 115, 107, 83, 99, 104, 101,
			100, 117, 108, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 70, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 82, 101, 115, 112, 111, 110, 115, 105,
			98, 105, 108, 105, 116, 121, 70, 111, 114, 68,
			101, 115, 116, 114, 111, 121, 79, 98, 106, 101,
			99, 116, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 74, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 83, 104, 97, 100, 101,
			114, 115, 92, 71, 76, 84, 70, 92, 73, 79,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 92, 73, 109,
			112, 111, 114, 116, 101, 114, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 68, 101, 115, 99, 114,
			105, 112, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 71, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 92,
			73, 109, 112, 111, 114, 116, 101, 114, 92, 77,
			97, 116, 101, 114, 105, 97, 108, 70, 97, 99,
			116, 111, 114, 121, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 48, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 92, 71, 76, 84, 70, 92, 73,
			79, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			80, 97, 116, 104, 79, 98, 106, 101, 99, 116,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			49, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 92,
			71, 76, 84, 70, 92, 73, 79, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 83, 117, 98, 65,
			115, 115, 101, 116, 75, 101, 121, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 71, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 71, 76, 84,
			70, 92, 73, 79, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 84, 101, 120, 116, 117, 114, 101,
			92, 67, 111, 110, 118, 101, 114, 116, 101, 114,
			92, 78, 111, 114, 109, 97, 108, 67, 111, 110,
			118, 101, 114, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 91, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 92, 71, 76, 84, 70,
			92, 73, 79, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 84, 101, 120, 116, 117, 114, 101, 92,
			67, 111, 110, 118, 101, 114, 116, 101, 114, 92,
			79, 99, 99, 108, 117, 115, 105, 111, 110, 77,
			101, 116, 97, 108, 108, 105, 99, 82, 111, 117,
			103, 104, 110, 101, 115, 115, 67, 111, 110, 118,
			101, 114, 116, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 72, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 84, 101, 120, 116, 117, 114, 101, 92, 67,
			111, 110, 118, 101, 114, 116, 101, 114, 92, 84,
			101, 120, 116, 117, 114, 101, 67, 111, 110, 118,
			101, 114, 116, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 71, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 84, 101, 120, 116, 117, 114, 101, 92, 69,
			120, 112, 111, 114, 116, 101, 114, 92, 73, 84,
			101, 120, 116, 117, 114, 101, 69, 120, 112, 111,
			114, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 73, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 92, 71, 76, 84, 70, 92, 73,
			79, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			84, 101, 120, 116, 117, 114, 101, 92, 69, 120,
			112, 111, 114, 116, 101, 114, 92, 73, 84, 101,
			120, 116, 117, 114, 101, 83, 101, 114, 105, 97,
			108, 105, 122, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 79, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 71, 76, 84, 70, 92,
			73, 79, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 84, 101, 120, 116, 117, 114, 101, 92, 69,
			120, 112, 111, 114, 116, 101, 114, 92, 82, 117,
			110, 116, 105, 109, 101, 84, 101, 120, 116, 117,
			114, 101, 83, 101, 114, 105, 97, 108, 105, 122,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 70, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 92, 71, 76, 84, 70, 92, 73, 79, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 84, 101,
			120, 116, 117, 114, 101, 92, 69, 120, 112, 111,
			114, 116, 101, 114, 92, 84, 101, 120, 116, 117,
			114, 101, 69, 120, 112, 111, 114, 116, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			73, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 92,
			71, 76, 84, 70, 92, 73, 79, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 84, 101, 120, 116,
			117, 114, 101, 92, 69, 120, 112, 111, 114, 116,
			101, 114, 92, 84, 101, 120, 116, 117, 114, 101,
			69, 120, 112, 111, 114, 116, 80, 97, 114, 97,
			109, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 79, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 71, 76, 84, 70, 92, 73, 79, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 101, 120,
			116, 117, 114, 101, 92, 73, 109, 112, 111, 114,
			116, 101, 114, 92, 68, 101, 115, 101, 114, 105,
			97, 108, 105, 122, 105, 110, 103, 84, 101, 120,
			116, 117, 114, 101, 73, 110, 102, 111, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 75, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 92, 71, 76,
			84, 70, 92, 73, 79, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 84, 101, 120, 116, 117, 114,
			101, 92, 73, 109, 112, 111, 114, 116, 101, 114,
			92, 73, 84, 101, 120, 116, 117, 114, 101, 68,
			101, 115, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 77, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 71, 76, 84, 70, 92, 73, 79, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 101, 120,
			116, 117, 114, 101, 92, 73, 109, 112, 111, 114,
			116, 101, 114, 92, 75, 116, 120, 84, 101, 120,
			116, 117, 114, 101, 68, 101, 115, 101, 114, 105,
			97, 108, 105, 122, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 67, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 92, 71, 76, 84, 70,
			92, 73, 79, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 84, 101, 120, 116, 117, 114, 101, 92,
			73, 109, 112, 111, 114, 116, 101, 114, 92, 83,
			97, 109, 112, 108, 101, 114, 80, 97, 114, 97,
			109, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 72, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 71, 76, 84, 70, 92, 73, 79, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 101, 120,
			116, 117, 114, 101, 92, 73, 109, 112, 111, 114,
			116, 101, 114, 92, 84, 101, 120, 116, 117, 114,
			101, 68, 101, 115, 99, 114, 105, 112, 116, 111,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 75, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 71, 76, 84, 70, 92, 73, 79, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 101, 120,
			116, 117, 114, 101, 92, 73, 109, 112, 111, 114,
			116, 101, 114, 92, 84, 101, 120, 116, 117, 114,
			101, 68, 101, 115, 99, 114, 105, 112, 116, 111,
			114, 83, 101, 116, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 69, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 92, 71, 76, 84, 70, 92, 73,
			79, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			84, 101, 120, 116, 117, 114, 101, 92, 73, 109,
			112, 111, 114, 116, 101, 114, 92, 84, 101, 120,
			116, 117, 114, 101, 70, 97, 99, 116, 111, 114,
			121, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 72, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 71, 76, 84, 70, 92, 73, 79, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 101, 120,
			116, 117, 114, 101, 92, 73, 109, 112, 111, 114,
			116, 101, 114, 92, 84, 101, 120, 116, 117, 114,
			101, 73, 109, 112, 111, 114, 116, 78, 97, 109,
			101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 90, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 71, 76, 84, 70, 92, 73, 79, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 101, 120,
			116, 117, 114, 101, 92, 73, 109, 112, 111, 114,
			116, 101, 114, 92, 85, 110, 105, 116, 121, 83,
			117, 112, 112, 111, 114, 116, 101, 100, 73, 109,
			97, 103, 101, 84, 121, 112, 101, 68, 101, 115,
			101, 114, 105, 97, 108, 105, 122, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 79,
			92, 65, 115, 115, 101, 116, 115, 92, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 92, 71,
			76, 84, 70, 92, 73, 79, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 84, 101, 120, 116, 117,
			114, 101, 92, 73, 109, 112, 111, 114, 116, 101,
			114, 92, 85, 110, 105, 116, 121, 84, 101, 120,
			116, 117, 114, 101, 68, 101, 115, 101, 114, 105,
			97, 108, 105, 122, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 68, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 92, 71, 76, 84, 70,
			92, 73, 79, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 84, 101, 120, 116, 117, 114, 101, 92,
			85, 116, 105, 108, 92, 84, 101, 120, 116, 117,
			114, 101, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 50, 92, 65, 115, 115, 101, 116, 115,
			92, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 92, 71, 76, 84, 70, 92, 73, 79, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 116,
			105, 108, 92, 83, 121, 109, 98, 111, 108, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			63, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 92,
			71, 76, 84, 70, 92, 73, 79, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 85, 116, 105, 108,
			92, 85, 110, 105, 116, 121, 79, 98, 106, 101,
			99, 116, 68, 101, 115, 116, 114, 111, 121, 101,
			114, 46, 99, 115
		};
		result.TypesData = new byte[1274]
		{
			0, 0, 0, 0, 31, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 124, 65, 110, 105, 109,
			97, 116, 105, 111, 110, 67, 108, 105, 112, 70,
			97, 99, 116, 111, 114, 121, 0, 0, 0, 0,
			23, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 124, 73, 65, 119, 97, 105, 116, 67, 97,
			108, 108, 101, 114, 0, 0, 0, 0, 26, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 124,
			73, 109, 109, 101, 100, 105, 97, 116, 101, 67,
			97, 108, 108, 101, 114, 0, 0, 0, 0, 33,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			124, 78, 101, 120, 116, 70, 114, 97, 109, 101,
			84, 97, 115, 107, 83, 99, 104, 101, 100, 117,
			108, 101, 114, 0, 0, 0, 0, 56, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 46, 78,
			101, 120, 116, 70, 114, 97, 109, 101, 84, 97,
			115, 107, 83, 99, 104, 101, 100, 117, 108, 101,
			114, 124, 85, 110, 105, 116, 121, 76, 111, 111,
			112, 84, 97, 115, 107, 83, 99, 104, 101, 100,
			117, 108, 101, 114, 0, 0, 0, 0, 33, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 124,
			82, 117, 110, 116, 105, 109, 101, 79, 110, 108,
			121, 65, 119, 97, 105, 116, 67, 97, 108, 108,
			101, 114, 0, 0, 0, 0, 41, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 82, 117,
			110, 116, 105, 109, 101, 79, 110, 108, 121, 78,
			111, 84, 104, 114, 101, 97, 100, 65, 119, 97,
			105, 116, 67, 97, 108, 108, 101, 114, 0, 0,
			0, 0, 35, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 124, 84, 105, 110, 121, 77, 97,
			110, 97, 103, 101, 100, 84, 97, 115, 107, 83,
			99, 104, 101, 100, 117, 108, 101, 114, 0, 0,
			0, 0, 43, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 124, 73, 82, 101, 115, 112, 111,
			110, 115, 105, 98, 105, 108, 105, 116, 121, 70,
			111, 114, 68, 101, 115, 116, 114, 111, 121, 79,
			98, 106, 101, 99, 116, 115, 0, 0, 0, 0,
			29, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 124, 77, 97, 116, 101, 114, 105, 97, 108,
			68, 101, 115, 99, 114, 105, 112, 116, 111, 114,
			0, 0, 0, 0, 26, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 124, 77, 97, 116, 101,
			114, 105, 97, 108, 70, 97, 99, 116, 111, 114,
			121, 0, 0, 0, 0, 43, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 46, 77, 97, 116,
			101, 114, 105, 97, 108, 70, 97, 99, 116, 111,
			114, 121, 124, 77, 97, 116, 101, 114, 105, 97,
			108, 76, 111, 97, 100, 73, 110, 102, 111, 0,
			0, 0, 0, 21, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 124, 80, 97, 116, 104, 79,
			98, 106, 101, 99, 116, 0, 0, 0, 0, 22,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			124, 83, 117, 98, 65, 115, 115, 101, 116, 75,
			101, 121, 0, 0, 0, 0, 26, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 78, 111,
			114, 109, 97, 108, 67, 111, 110, 118, 101, 114,
			116, 101, 114, 0, 0, 0, 0, 46, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 124, 79,
			99, 99, 108, 117, 115, 105, 111, 110, 77, 101,
			116, 97, 108, 108, 105, 99, 82, 111, 117, 103,
			104, 110, 101, 115, 115, 67, 111, 110, 118, 101,
			114, 116, 101, 114, 0, 0, 0, 0, 27, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 124,
			84, 101, 120, 116, 117, 114, 101, 67, 111, 110,
			118, 101, 114, 116, 101, 114, 0, 0, 0, 0,
			27, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 124, 73, 84, 101, 120, 116, 117, 114, 101,
			69, 120, 112, 111, 114, 116, 101, 114, 0, 0,
			0, 0, 29, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 124, 73, 84, 101, 120, 116, 117,
			114, 101, 83, 101, 114, 105, 97, 108, 105, 122,
			101, 114, 0, 0, 0, 0, 35, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 82, 117,
			110, 116, 105, 109, 101, 84, 101, 120, 116, 117,
			114, 101, 83, 101, 114, 105, 97, 108, 105, 122,
			101, 114, 0, 0, 0, 0, 26, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 84, 101,
			120, 116, 117, 114, 101, 69, 120, 112, 111, 114,
			116, 101, 114, 0, 0, 0, 0, 29, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 124, 84,
			101, 120, 116, 117, 114, 101, 69, 120, 112, 111,
			114, 116, 80, 97, 114, 97, 109, 0, 0, 0,
			0, 35, 86, 82, 77, 83, 104, 97, 100, 101,
			114, 115, 124, 68, 101, 115, 101, 114, 105, 97,
			108, 105, 122, 105, 110, 103, 84, 101, 120, 116,
			117, 114, 101, 73, 110, 102, 111, 0, 0, 0,
			0, 31, 86, 82, 77, 83, 104, 97, 100, 101,
			114, 115, 124, 73, 84, 101, 120, 116, 117, 114,
			101, 68, 101, 115, 101, 114, 105, 97, 108, 105,
			122, 101, 114, 0, 0, 0, 0, 33, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 124, 75,
			116, 120, 84, 101, 120, 116, 117, 114, 101, 68,
			101, 115, 101, 114, 105, 97, 108, 105, 122, 101,
			114, 0, 0, 0, 0, 23, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 124, 83, 97, 109,
			112, 108, 101, 114, 80, 97, 114, 97, 109, 0,
			0, 0, 0, 28, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 124, 84, 101, 120, 116, 117,
			114, 101, 68, 101, 115, 99, 114, 105, 112, 116,
			111, 114, 0, 0, 0, 0, 31, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 84, 101,
			120, 116, 117, 114, 101, 68, 101, 115, 99, 114,
			105, 112, 116, 111, 114, 83, 101, 116, 0, 0,
			0, 0, 25, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 124, 84, 101, 120, 116, 117, 114,
			101, 70, 97, 99, 116, 111, 114, 121, 0, 0,
			0, 0, 28, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 124, 84, 101, 120, 116, 117, 114,
			101, 73, 109, 112, 111, 114, 116, 78, 97, 109,
			101, 0, 0, 0, 0, 46, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 124, 85, 110, 105,
			116, 121, 83, 117, 112, 112, 111, 114, 116, 101,
			100, 73, 109, 97, 103, 101, 84, 121, 112, 101,
			68, 101, 115, 101, 114, 105, 97, 108, 105, 122,
			101, 114, 0, 0, 0, 0, 35, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 85, 110,
			105, 116, 121, 84, 101, 120, 116, 117, 114, 101,
			68, 101, 115, 101, 114, 105, 97, 108, 105, 122,
			101, 114, 0, 0, 0, 0, 28, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 124, 84, 101,
			120, 116, 117, 114, 101, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 18,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			124, 83, 121, 109, 98, 111, 108, 115, 0, 0,
			0, 0, 31, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 124, 85, 110, 105, 116, 121, 79,
			98, 106, 101, 99, 116, 68, 101, 115, 116, 114,
			111, 121, 101, 114
		};
		result.TotalFiles = 33;
		result.TotalTypes = 35;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace VRMShaders;

public class AnimationClipFactory : IResponsibilityForDestroyObjects, IDisposable
{
	private readonly IReadOnlyDictionary<SubAssetKey, AnimationClip> _externalClips;

	private readonly Dictionary<SubAssetKey, AnimationClip> _runtimeClips = new Dictionary<SubAssetKey, AnimationClip>();

	private readonly List<SubAssetKey> _loadedClipKeys = new List<SubAssetKey>();

	public IReadOnlyDictionary<SubAssetKey, AnimationClip> ExternalClips => _externalClips;

	public IReadOnlyDictionary<SubAssetKey, AnimationClip> RuntimeGeneratedClips => _runtimeClips;

	public IReadOnlyList<SubAssetKey> LoadedClipKeys => _loadedClipKeys;

	public AnimationClipFactory(IReadOnlyDictionary<SubAssetKey, AnimationClip> externalClips)
	{
		_externalClips = externalClips;
	}

	public void Dispose()
	{
		foreach (KeyValuePair<SubAssetKey, AnimationClip> runtimeClip in _runtimeClips)
		{
			UnityObjectDestroyer.DestroyRuntimeOrEditor((Object)(object)runtimeClip.Value);
		}
		_runtimeClips.Clear();
	}

	public void TransferOwnership(TakeResponsibilityForDestroyObjectFunc take)
	{
		KeyValuePair<SubAssetKey, AnimationClip>[] array = _runtimeClips.ToArray();
		for (int i = 0; i < array.Length; i++)
		{
			KeyValuePair<SubAssetKey, AnimationClip> keyValuePair = array[i];
			var (key, obj) = (KeyValuePair<SubAssetKey, AnimationClip>)(ref keyValuePair);
			take(key, (Object)(object)obj);
			_runtimeClips.Remove(key);
		}
	}

	public AnimationClip GetAnimationClip(SubAssetKey key)
	{
		if (_externalClips.TryGetValue(key, out var value))
		{
			return value;
		}
		if (_runtimeClips.TryGetValue(key, out value))
		{
			return value;
		}
		return null;
	}

	public async Task<AnimationClip> LoadAnimationClipAsync(SubAssetKey key, Func<Task<AnimationClip>> loadAnimationClip)
	{
		if (!_loadedClipKeys.Contains(key))
		{
			_loadedClipKeys.Add(key);
		}
		AnimationClip animationClip = GetAnimationClip(key);
		if ((Object)(object)animationClip != (Object)null)
		{
			return animationClip;
		}
		animationClip = await loadAnimationClip();
		_runtimeClips.Add(key, animationClip);
		return animationClip;
	}
}
public interface IAwaitCaller
{
	Task NextFrame();

	Task Run(Action action);

	Task<T> Run<T>(Func<T> action);

	Task NextFrameIfTimedOut();
}
public sealed class ImmediateCaller : IAwaitCaller
{
	public Task NextFrame()
	{
		return Task.FromResult<object>(null);
	}

	public Task Run(Action action)
	{
		action();
		return Task.FromResult<object>(null);
	}

	public Task<T> Run<T>(Func<T> action)
	{
		return Task.FromResult(action());
	}

	public Task NextFrameIfTimedOut()
	{
		return NextFrame();
	}
}
internal sealed class NextFrameTaskScheduler
{
	private sealed class UnityLoopTaskScheduler : MonoBehaviour
	{
		private static UnityLoopTaskScheduler _instance;

		public static UnityLoopTaskScheduler Instance
		{
			get
			{
				//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_001d: Expected O, but got Unknown
				if ((Object)(object)_instance == (Object)null)
				{
					GameObject val = new GameObject("UniGLTF UnityThreadScheduler");
					Object.DontDestroyOnLoad((Object)val);
					_instance = val.AddComponent<UnityLoopTaskScheduler>();
				}
				return _instance;
			}
		}

		public TinyManagedTaskScheduler Scheduler { get; } = new TinyManagedTaskScheduler();


		private void Update()
		{
			Scheduler.ManagedUpdate();
		}
	}

	public bool IsSupported => Application.isPlaying;

	public NextFrameTaskScheduler()
	{
		if (!IsSupported)
		{
			throw new NotSupportedException("NextFrameTaskScheduler is supported at runtime only.");
		}
	}

	public bool Enqueue(Action action)
	{
		int currentFrame = Time.frameCount;
		UnityLoopTaskScheduler.Instance.Scheduler.Enqueue(action, () => Time.frameCount != currentFrame);
		return true;
	}
}
public sealed class RuntimeOnlyAwaitCaller : IAwaitCaller
{
	private readonly NextFrameTaskScheduler _scheduler;

	private readonly float _timeOutInSeconds;

	private float _lastTimeoutBaseTime;

	private bool LastTimeoutBaseTimeNeedsReset => _lastTimeoutBaseTime == 0f;

	public RuntimeOnlyAwaitCaller(float timeOutInSeconds = 0.001f)
	{
		_scheduler = new NextFrameTaskScheduler();
		_timeOutInSeconds = timeOutInSeconds;
		ResetLastTimeoutBaseTime();
	}

	public Task NextFrame()
	{
		ResetLastTimeoutBaseTime();
		TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
		_scheduler.Enqueue(delegate
		{
			tcs.SetResult(null);
		});
		return tcs.Task;
	}

	public Task Run(Action action)
	{
		return Task.Run(action);
	}

	public Task<T> Run<T>(Func<T> action)
	{
		return Task.Run(action);
	}

	public Task NextFrameIfTimedOut()
	{
		if (!CheckTimeout())
		{
			return Task.CompletedTask;
		}
		return NextFrame();
	}

	private void ResetLastTimeoutBaseTime()
	{
		_lastTimeoutBaseTime = 0f;
	}

	private bool CheckTimeout()
	{
		float realtimeSinceStartup = Time.realtimeSinceStartup;
		if (LastTimeoutBaseTimeNeedsReset)
		{
			_lastTimeoutBaseTime = realtimeSinceStartup;
		}
		return realtimeSinceStartup - _lastTimeoutBaseTime >= _timeOutInSeconds;
	}
}
public sealed class RuntimeOnlyNoThreadAwaitCaller : IAwaitCaller
{
	private readonly NextFrameTaskScheduler _scheduler;

	private readonly float _timeoutInSeconds;

	private float _lastTimeoutBaseTime;

	private bool LastTimeoutBaseTimeNeedsReset => _lastTimeoutBaseTime == 0f;

	public RuntimeOnlyNoThreadAwaitCaller(float timeoutInSeconds = 0.001f)
	{
		_scheduler = new NextFrameTaskScheduler();
		_timeoutInSeconds = timeoutInSeconds;
		ResetLastTimeoutBaseTime();
	}

	public Task NextFrame()
	{
		ResetLastTimeoutBaseTime();
		TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
		_scheduler.Enqueue(delegate
		{
			tcs.SetResult(null);
		});
		return tcs.Task;
	}

	public Task Run(Action action)
	{
		try
		{
			action();
			return Task.FromResult<object>(null);
		}
		catch (Exception exception)
		{
			return Task.FromException(exception);
		}
	}

	public Task<T> Run<T>(Func<T> action)
	{
		try
		{
			return Task.FromResult(action());
		}
		catch (Exception exception)
		{
			return Task.FromException<T>(exception);
		}
	}

	public Task NextFrameIfTimedOut()
	{
		if (!CheckTimeout())
		{
			return Task.CompletedTask;
		}
		return NextFrame();
	}

	private void ResetLastTimeoutBaseTime()
	{
		_lastTimeoutBaseTime = 0f;
	}

	private bool CheckTimeout()
	{
		float realtimeSinceStartup = Time.realtimeSinceStartup;
		if (LastTimeoutBaseTimeNeedsReset)
		{
			_lastTimeoutBaseTime = realtimeSinceStartup;
		}
		return realtimeSinceStartup - _lastTimeoutBaseTime >= _timeoutInSeconds;
	}
}
internal sealed class TinyManagedTaskScheduler
{
	private readonly ConcurrentQueue<(Action, Func<bool>)> _continuationQueue = new ConcurrentQueue<(Action, Func<bool>)>();

	private readonly ConcurrentQueue<(Action, Func<bool>)> _temporaryQueue = new ConcurrentQueue<(Action, Func<bool>)>();

	public void ManagedUpdate()
	{
		(Action, Func<bool>) result;
		while (_continuationQueue.TryDequeue(out result))
		{
			(Action, Func<bool>) tuple = result;
			var (action, _) = tuple;
			if (tuple.Item2())
			{
				action();
			}
			else
			{
				_temporaryQueue.Enqueue(result);
			}
		}
		(Action, Func<bool>) result2;
		while (_temporaryQueue.TryDequeue(out result2))
		{
			_continuationQueue.Enqueue(result2);
		}
	}

	public void Enqueue(Action continuation, Func<bool> canExecute)
	{
		_continuationQueue.Enqueue((continuation, canExecute));
	}
}
public enum ColorSpace
{
	sRGB,
	Linear
}
public delegate void TakeResponsibilityForDestroyObjectFunc(SubAssetKey key, Object obj);
public interface IResponsibilityForDestroyObjects : IDisposable
{
	void TransferOwnership(TakeResponsibilityForDestroyObjectFunc take);
}
public sealed class MaterialDescriptor
{
	public readonly string Name;

	public readonly Shader Shader;

	public readonly int? RenderQueue;

	public readonly IReadOnlyDictionary<string, TextureDescriptor> TextureSlots;

	public readonly IReadOnlyDictionary<string, float> FloatValues;

	public readonly IReadOnlyDictionary<string, Color> Colors;

	public readonly IReadOnlyDictionary<string, Vector4> Vectors;

	public readonly IReadOnlyList<Action<Material>> Actions;

	public SubAssetKey SubAssetKey => new SubAssetKey(SubAssetKey.MaterialType, Name);

	public MaterialDescriptor(string name, Shader shader, int? renderQueue, IReadOnlyDictionary<string, TextureDescriptor> textureSlots, IReadOnlyDictionary<string, float> floatValues, IReadOnlyDictionary<string, Color> colors, IReadOnlyDictionary<string, Vector4> vectors, IReadOnlyList<Action<Material>> actions)
	{
		Name = name;
		Shader = shader;
		RenderQueue = renderQueue;
		TextureSlots = textureSlots;
		FloatValues = floatValues;
		Colors = colors;
		Vectors = vectors;
		Actions = actions;
	}
}
public delegate Task<Texture> GetTextureAsyncFunc(TextureDescriptor texDesc, IAwaitCaller awaitCaller);
public class MaterialFactory : IResponsibilityForDestroyObjects, IDisposable
{
	public struct MaterialLoadInfo
	{
		public SubAssetKey Key;

		public readonly Material Asset;

		public readonly bool UseExternal;

		public bool IsSubAsset => !UseExternal;

		public MaterialLoadInfo(SubAssetKey key, Material asset, bool useExternal)
		{
			Key = key;
			Asset = asset;
			UseExternal = useExternal;
		}
	}

	private readonly IReadOnlyDictionary<SubAssetKey, Material> m_externalMap;

	private List<MaterialLoadInfo> m_materials = new List<MaterialLoadInfo>();

	public IReadOnlyList<MaterialLoadInfo> Materials => m_materials;

	public MaterialFactory(IReadOnlyDictionary<SubAssetKey, Material> externalMaterialMap)
	{
		m_externalMap = externalMaterialMap;
	}

	private void Remove(Material material)
	{
		int num = m_materials.FindIndex((MaterialLoadInfo x) => (Object)(object)x.Asset == (Object)(object)material);
		if (num >= 0)
		{
			m_materials.RemoveAt(num);
		}
	}

	public void Dispose()
	{
		foreach (MaterialLoadInfo material in m_materials)
		{
			if (!material.UseExternal)
			{
				UnityObjectDestroyer.DestroyRuntimeOrEditor((Object)(object)material.Asset);
			}
		}
	}

	public void TransferOwnership(TakeResponsibilityForDestroyObjectFunc take)
	{
		MaterialLoadInfo[] array = m_materials.ToArray();
		for (int i = 0; i < array.Length; i++)
		{
			MaterialLoadInfo item = array[i];
			if (!item.UseExternal)
			{
				take(item.Key, (Object)(object)item.Asset);
				m_materials.Remove(item);
			}
		}
	}

	public Material GetMaterial(int index)
	{
		if (index < 0)
		{
			return null;
		}
		if (index >= m_materials.Count)
		{
			return null;
		}
		return m_materials[index].Asset;
	}

	public async Task<Material> LoadAsync(MaterialDescriptor matDesc, GetTextureAsyncFunc getTexture, IAwaitCaller awaitCaller)
	{
		if (m_externalMap.TryGetValue(matDesc.SubAssetKey, out var material2))
		{
			m_materials.Add(new MaterialLoadInfo(matDesc.SubAssetKey, material2, useExternal: true));
			return material2;
		}
		if (getTexture == null)
		{
			getTexture = (TextureDescriptor x, IAwaitCaller y) => Task.FromResult<Texture>(null);
		}
		if ((Object)(object)matDesc.Shader == (Object)null)
		{
			throw new ArgumentNullException("Shader");
		}
		material2 = new Material(matDesc.Shader);
		((Object)material2).name = matDesc.SubAssetKey.Name;
		foreach (KeyValuePair<string, TextureDescriptor> kv in matDesc.TextureSlots)
		{
			Texture val = await getTexture(kv.Value, awaitCaller);
			if ((Object)(object)val != (Object)null)
			{
				material2.SetTexture(kv.Key, val);
				SetTextureOffsetAndScale(material2, kv.Key, kv.Value.Offset, kv.Value.Scale);
			}
		}
		foreach (KeyValuePair<string, Color> color in matDesc.Colors)
		{
			material2.SetColor(color.Key, color.Value);
		}
		foreach (KeyValuePair<string, Vector4> vector in matDesc.Vectors)
		{
			material2.SetVector(vector.Key, vector.Value);
		}
		foreach (KeyValuePair<string, float> floatValue in matDesc.FloatValues)
		{
			material2.SetFloat(floatValue.Key, floatValue.Value);
		}
		if (matDesc.RenderQueue.HasValue)
		{
			material2.renderQueue = matDesc.RenderQueue.Value;
		}
		foreach (Action<Material> action in matDesc.Actions)
		{
			action(material2);
		}
		m_materials.Add(new MaterialLoadInfo(matDesc.SubAssetKey, material2, useExternal: false));
		return material2;
	}

	public static void SetTextureOffsetAndScale(Material material, string propertyName, Vector2 offset, Vector2 scale)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		material.SetTextureOffset(propertyName, offset);
		material.SetTextureScale(propertyName, scale);
	}
}
public readonly struct PathObject
{
	public string FullPath { get; }

	public string Extension => Path.GetExtension(FullPath);

	public string Stem => Path.GetFileNameWithoutExtension(FullPath);

	public PathObject Parent => FromFullPath(Path.GetDirectoryName(FullPath));

	public bool IsUnderAsset => IsDescendantOf(UnityAssets);

	public bool Exists => File.Exists(FullPath);

	public string UnityAssetPath
	{
		get
		{
			PathObject unityRoot = UnityRoot;
			if (!IsDescendantOf(UnityRoot))
			{
				throw new ArgumentException(FullPath + " is not under UnityAssetPath");
			}
			return FullPath.Substring(unityRoot.FullPath.Length + 1);
		}
	}

	public static PathObject UnityRoot { get; } = FromFullPath(Path.GetDirectoryName(Application.dataPath));


	public static PathObject UnityAssets { get; } = UnityRoot.Child("Assets/");


	private PathObject(string src)
	{
		if (string.IsNullOrEmpty(src))
		{
			throw new ArgumentNullException();
		}
		src = Path.GetFullPath(src).Replace('\\', '/');
		if (src.Length > 1 && src[src.Length - 1] == '/')
		{
			src = src.Substring(0, src.Length - 1);
		}
		if (src[0] == '/')
		{
			FullPath = src;
			return;
		}
		if (src.Length >= 3 && src[1] == ':' && src[2] == '/')
		{
			FullPath = src;
			return;
		}
		throw new ArgumentException(src + " is not fullpath");
	}

	public override string ToString()
	{
		try
		{
			string unityAssetPath = UnityAssetPath;
			return "<unity:" + unityAssetPath + ">";
		}
		catch (ArgumentException)
		{
			return "<file:" + FullPath + ">";
		}
	}

	public static PathObject FromFullPath(string src)
	{
		return new PathObject(src);
	}

	public static PathObject FromUnityAssetPath(string src)
	{
		return UnityRoot.Child(src);
	}

	public static bool TryGetFromEnvironmentVariable(string key, out PathObject dst)
	{
		string environmentVariable = Environment.GetEnvironmentVariable(key);
		if (string.IsNullOrEmpty(environmentVariable))
		{
			dst = default(PathObject);
			return false;
		}
		dst = FromFullPath(environmentVariable);
		return true;
	}

	public PathObject Child(string child)
	{
		return FromFullPath(Path.Combine(FullPath, child));
	}

	public bool IsDescendantOf(PathObject ascendant)
	{
		if (!FullPath.StartsWith(ascendant.FullPath))
		{
			return false;
		}
		if (FullPath.Length <= ascendant.FullPath.Length || FullPath[ascendant.FullPath.Length] != '/')
		{
			return false;
		}
		return true;
	}

	public byte[] ReadAllBytes()
	{
		return File.ReadAllBytes(FullPath);
	}

	public void WriteAllBytes(byte[] data)
	{
		File.WriteAllBytes(FullPath, data);
	}
}
public readonly struct SubAssetKey : IEquatable<SubAssetKey>
{
	public static readonly Type TextureType = typeof(Texture);

	public static readonly Type MaterialType = typeof(Material);

	public readonly Type Type;

	public readonly string Name;

	public SubAssetKey(Texture obj)
	{
		if ((Object)(object)obj == (Object)null || string.IsNullOrEmpty(((Object)obj).name))
		{
			throw new ArgumentNullException();
		}
		Type = TextureType;
		Name = ((Object)obj).name;
	}

	public SubAssetKey(Material obj)
	{
		if ((Object)(object)obj == (Object)null || string.IsNullOrEmpty(((Object)obj).name))
		{
			throw new ArgumentNullException();
		}
		Type = MaterialType;
		Name = ((Object)obj).name;
	}

	public static SubAssetKey Create<T>(T obj) where T : Object
	{
		return new SubAssetKey(typeof(T), ((Object)obj).name);
	}

	public SubAssetKey(Type type, string name)
	{
		if (type == null)
		{
			throw new ArgumentNullException("type");
		}
		if (string.IsNullOrEmpty(name))
		{
			throw new ArgumentNullException("name");
		}
		if (!type.IsSubclassOf(typeof(Object)))
		{
			throw new ArgumentException($"{type}:{name}");
		}
		if (type.IsSubclassOf(TextureType))
		{
			type = TextureType;
		}
		Type = type;
		Name = name;
	}

	public override string ToString()
	{
		return $"{Type}:{Name}";
	}

	public override bool Equals(object obj)
	{
		if (obj is SubAssetKey subAssetKey)
		{
			return this == subAssetKey;
		}
		return true;
	}

	public bool Equals(SubAssetKey other)
	{
		if (Type == other.Type)
		{
			return Name == other.Name;
		}
		return false;
	}

	public static bool operator ==(SubAssetKey l, SubAssetKey r)
	{
		return l.Equals(r);
	}

	public static bool operator !=(SubAssetKey l, SubAssetKey r)
	{
		return !(l == r);
	}

	public override int GetHashCode()
	{
		return Name.GetHashCode();
	}
}
public static class NormalConverter
{
	private static Material _exporter;

	private static Material Exporter
	{
		get
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if ((Object)(object)_exporter == (Object)null)
			{
				_exporter = new Material(Shader.Find("Hidden/UniGLTF/NormalMapExporter"));
			}
			return _exporter;
		}
	}

	public static Texture2D Export(Texture texture)
	{
		return TextureConverter.CopyTexture(texture, ColorSpace.Linear, dstNeedsAlpha: false, Exporter);
	}
}
public static class OcclusionMetallicRoughnessConverter
{
	private static Material _importer;

	private static Material _exporter;

	private static Material Importer
	{
		get
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if ((Object)(object)_importer == (Object)null)
			{
				_importer = new Material(Shader.Find("Hidden/UniGLTF/StandardMapImporter"));
			}
			return _importer;
		}
	}

	private static Material Exporter
	{
		get
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if ((Object)(object)_exporter == (Object)null)
			{
				_exporter = new Material(Shader.Find("Hidden/UniGLTF/StandardMapExporter"));
			}
			return _exporter;
		}
	}

	public static Texture2D Import(Texture2D metallicRoughnessTexture, float metallicFactor, float roughnessFactor, Texture2D occlusionTexture, bool isLegacySquaredRoughness)
	{
		if ((Object)(object)metallicRoughnessTexture == (Object)null && (Object)(object)occlusionTexture == (Object)null)
		{
			throw new ArgumentNullException("no texture");
		}
		Texture2D val = (((Object)(object)metallicRoughnessTexture != (Object)null) ? metallicRoughnessTexture : occlusionTexture);
		Importer.mainTexture = (Texture)(object)val;
		Importer.SetTexture("_GltfMetallicRoughnessTexture", (Texture)(object)metallicRoughnessTexture);
		Importer.SetTexture("_GltfOcclusionTexture", (Texture)(object)occlusionTexture);
		Importer.SetFloat("_GltfMetallicFactor", metallicFactor);
		Importer.SetFloat("_GltfRoughnessFactor", roughnessFactor);
		Importer.SetFloat("_IsLegacySquaredRoughness", (float)(isLegacySquaredRoughness ? 1 : 0));
		Texture2D result = TextureConverter.CopyTexture((Texture)(object)val, ColorSpace.Linear, dstNeedsAlpha: true, Importer);
		Importer.mainTexture = null;
		Importer.SetTexture("_GltfMetallicRoughnessTexture", (Texture)null);
		Importer.SetTexture("_GltfOcclusionTexture", (Texture)null);
		Importer.SetFloat("_GltfMetallicFactor", 0f);
		Importer.SetFloat("_GltfRoughnessFactor", 0f);
		Importer.SetFloat("_IsLegacySquaredRoughness", 0f);
		return result;
	}

	public static Texture2D Export(Texture metallicSmoothTexture, float smoothness, Texture occlusionTexture)
	{
		if ((Object)(object)metallicSmoothTexture == (Object)null && (Object)(object)occlusionTexture == (Object)null)
		{
			throw new ArgumentNullException("no texture");
		}
		Texture val = (((Object)(object)metallicSmoothTexture != (Object)null) ? metallicSmoothTexture : occlusionTexture);
		Exporter.mainTexture = val;
		Exporter.SetTexture("_UnityMetallicSmoothTexture", metallicSmoothTexture);
		Exporter.SetTexture("_UnityOcclusionTexture", occlusionTexture);
		Exporter.SetFloat("_UnitySmoothness", smoothness);
		Texture2D result = TextureConverter.CopyTexture(val, ColorSpace.Linear, dstNeedsAlpha: true, Exporter);
		Exporter.mainTexture = null;
		Exporter.SetTexture("_UnityMetallicSmoothTexture", (Texture)null);
		Exporter.SetTexture("_UnityOcclusionTexture", (Texture)null);
		Exporter.SetFloat("_UnitySmoothness", 0f);
		return result;
	}

	public static Color32 ExportPixel(Color32 metallicSmooth, float smoothness, Color32 occlusion)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: 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_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		Color32 result = default(Color32);
		result.r = occlusion.g;
		result.g = (byte)(255f - (float)(int)metallicSmooth.a * smoothness);
		result.b = metallicSmooth.r;
		result.a = byte.MaxValue;
		return result;
	}

	private static void DestroyTexture(Texture obj)
	{
		if (Application.isPlaying)
		{
			Object.Destroy((Object)(object)obj);
		}
		else
		{
			Object.DestroyImmediate((Object)(object)obj);
		}
	}
}
public static class TextureConverter
{
	public static readonly TextureFormat WithAlphaFormat = (TextureFormat)5;

	public static readonly TextureFormat WithoutAlphaFormat = (TextureFormat)3;

	public static Texture2D CreateEmptyTextureWithSettings(Texture src, ColorSpace dstColorSpace, bool dstNeedsAlpha)
	{
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: 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_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_008d: Expected O, but got Unknown
		TextureFormat val = (dstNeedsAlpha ? WithAlphaFormat : WithoutAlphaFormat);
		return new Texture2D(src.width, src.height, val, src.HasMipMap(), dstColorSpace == ColorSpace.Linear)
		{
			name = ((Object)src).name,
			anisoLevel = src.anisoLevel,
			filterMode = src.filterMode,
			mipMapBias = src.mipMapBias,
			wrapMode = src.wrapMode,
			wrapModeU = src.wrapModeU,
			wrapModeV = src.wrapModeV,
			wrapModeW = src.wrapModeW
		};
	}

	public static Texture2D CopyTexture(Texture src, ColorSpace dstColorSpace, bool dstNeedsAlpha, Material material)
	{
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Expected O, but got Unknown
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		RenderTextureReadWrite val = (RenderTextureReadWrite)(dstColorSpace switch
		{
			ColorSpace.sRGB => 2, 
			ColorSpace.Linear => 1, 
			_ => throw new ArgumentOutOfRangeException("dstColorSpace", dstColorSpace, null), 
		});
		RenderTexture val2 = new RenderTexture(src.width, src.height, 0, (RenderTextureFormat)0, val);
		if ((Object)(object)material != (Object)null)
		{
			Graphics.Blit(src, val2, material);
		}
		else
		{
			Graphics.Blit(src, val2);
		}
		Texture2D obj = CreateEmptyTextureWithSettings(src, dstColorSpace, dstNeedsAlpha);
		obj.ReadPixels(new Rect(0f, 0f, (float)src.width, (float)src.height), 0, 0);
		obj.Apply();
		RenderTexture.active = null;
		if (Application.isEditor)
		{
			Object.DestroyImmediate((Object)(object)val2);
			return obj;
		}
		Object.Destroy((Object)(object)val2);
		return obj;
	}
}
public interface ITextureExporter : IDisposable
{
	int RegisterExportingAsSRgb(Texture src, bool needsAlpha);

	int RegisterExportingAsLinear(Texture src, bool needsAlpha);

	int RegisterExportingAsCombinedGltfPbrParameterTextureFromUnityStandardTextures(Texture metallicSmoothTexture, float smoothness, Texture occlusionTexture);

	int RegisterExportingAsNormal(Texture src);
}
public interface ITextureSerializer
{
	bool CanExportAsEditorAssetFile(Texture texture, ColorSpace exportColorSpace);

	(byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace exportColorSpace);

	void ModifyTextureAssetBeforeExporting(Texture texture);
}
public sealed class RuntimeTextureSerializer : ITextureSerializer
{
	public bool CanExportAsEditorAssetFile(Texture texture, ColorSpace exportColorSpace)
	{
		return false;
	}

	public (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace exportColorSpace)
	{
		try
		{
			byte[] array = ImageConversion.EncodeToPNG(texture);
			if (array != null)
			{
				return (array, "image/png");
			}
			return CopyTextureAndGetBytesWithMime(texture, exportColorSpace);
		}
		catch (ArgumentException ex)
		{
			Debug.LogWarning((object)ex);
			return CopyTextureAndGetBytesWithMime(texture, exportColorSpace);
		}
	}

	public void ModifyTextureAssetBeforeExporting(Texture texture)
	{
	}

	private static (byte[] bytes, string mime) CopyTextureAndGetBytesWithMime(Texture2D texture, ColorSpace colorSpace)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Invalid comparison between Unknown and I4
		bool dstNeedsAlpha = (int)texture.format != 3;
		Texture2D val = TextureConverter.CopyTexture((Texture)(object)texture, colorSpace, dstNeedsAlpha, null);
		byte[] item = ImageConversion.EncodeToPNG(val);
		if (Application.isPlaying)
		{
			Object.Destroy((Object)(object)val);
		}
		else
		{
			Object.DestroyImmediate((Object)(object)val);
		}
		return (item, "image/png");
	}
}
public sealed class TextureExporter : ITextureExporter, IDisposable
{
	private readonly ITextureSerializer _textureSerializer;

	private readonly List<TextureExportParam> _exportingList = new List<TextureExportParam>();

	private readonly List<Texture2D> _disposables = new List<Texture2D>();

	public TextureExporter(ITextureSerializer textureSerializer)
	{
		_textureSerializer = textureSerializer;
	}

	public void Dispose()
	{
		foreach (Texture2D disposable in _disposables)
		{
			if (Application.isEditor)
			{
				Object.DestroyImmediate((Object)(object)disposable);
			}
			else
			{
				Object.Destroy((Object)(object)disposable);
			}
		}
	}

	private void PushDisposable(Texture2D disposable)
	{
		_disposables.Add(disposable);
	}

	public List<(Texture2D, ColorSpace)> Export()
	{
		List<(Texture2D, ColorSpace)> list = new List<(Texture2D, ColorSpace)>();
		for (int i = 0; i < _exportingList.Count; i++)
		{
			TextureExportParam textureExportParam = _exportingList[i];
			(Texture2D, bool) tuple = textureExportParam.Creator();
			var (val, _) = tuple;
			if (tuple.Item2)
			{
				PushDisposable(val);
			}
			list.Add((val, textureExportParam.ExportColorSpace));
		}
		return list;
	}

	public int RegisterExportingAsSRgb(Texture src, bool needsAlpha)
	{
		return RegisterExportingSimple(src, needsAlpha, isLinear: false);
	}

	public int RegisterExportingAsLinear(Texture src, bool needsAlpha)
	{
		return RegisterExportingSimple(src, needsAlpha, isLinear: true);
	}

	private int RegisterExportingSimple(Texture src, bool needsAlpha, bool isLinear)
	{
		if ((Object)(object)src == (Object)null)
		{
			return -1;
		}
		int exportType = (isLinear ? 1 : 0);
		ColorSpace colorSpace = (isLinear ? ColorSpace.Linear : ColorSpace.sRGB);
		TextureExportParam textureExportParam = new TextureExportParam((TextureExportTypes)exportType, colorSpace, src, null, 0f, needsAlpha, () => ConvertTextureSimple(src, needsAlpha, colorSpace));
		if (TryGetExistsParam(textureExportParam, out var existsIdx))
		{
			TextureExportParam textureExportParam2 = _exportingList[existsIdx];
			if (needsAlpha && !textureExportParam2.NeedsAlpha)
			{
				_exportingList[existsIdx] = textureExportParam;
				return existsIdx;
			}
			return existsIdx;
		}
		_exportingList.Add(textureExportParam);
		return _exportingList.Count - 1;
	}

	public int RegisterExportingAsCombinedGltfPbrParameterTextureFromUnityStandardTextures(Texture metallicSmoothTexture, float smoothness, Texture occlusionTexture)
	{
		if ((Object)(object)metallicSmoothTexture == (Object)null && (Object)(object)occlusionTexture == (Object)null)
		{
			return -1;
		}
		TextureExportParam textureExportParam = new TextureExportParam(TextureExportTypes.OcclusionMetallicRoughness, ColorSpace.Linear, metallicSmoothTexture, occlusionTexture, smoothness, needsAlpha: false, delegate
		{
			_textureSerializer.ModifyTextureAssetBeforeExporting(metallicSmoothTexture);
			_textureSerializer.ModifyTextureAssetBeforeExporting(occlusionTexture);
			return (OcclusionMetallicRoughnessConverter.Export(metallicSmoothTexture, smoothness, occlusionTexture), true);
		});
		if (TryGetExistsParam(textureExportParam, out var existsIdx))
		{
			return existsIdx;
		}
		_exportingList.Add(textureExportParam);
		return _exportingList.Count - 1;
	}

	public int RegisterExportingAsNormal(Texture src)
	{
		if ((Object)(object)src == (Object)null)
		{
			return -1;
		}
		TextureExportParam textureExportParam = new TextureExportParam(TextureExportTypes.Normal, ColorSpace.Linear, src, null, 0f, needsAlpha: false, delegate
		{
			_textureSerializer.ModifyTextureAssetBeforeExporting(src);
			return (NormalConverter.Export(src), true);
		});
		if (TryGetExistsParam(textureExportParam, out var existsIdx))
		{
			return existsIdx;
		}
		_exportingList.Add(textureExportParam);
		return _exportingList.Count - 1;
	}

	private (Texture2D, bool IsDisposable) ConvertTextureSimple(Texture src, bool needsAlpha, ColorSpace exportColorSpace)
	{
		Texture2D val = (Texture2D)(object)((src is Texture2D) ? src : null);
		bool item = false;
		if (_textureSerializer.CanExportAsEditorAssetFile((Texture)(object)val, exportColorSpace))
		{
			_textureSerializer.ModifyTextureAssetBeforeExporting(src);
		}
		else
		{
			_textureSerializer.ModifyTextureAssetBeforeExporting(src);
			val = TextureConverter.CopyTexture(src, exportColorSpace, needsAlpha, null);
			item = true;
		}
		return (val, item);
	}

	private bool TryGetExistsParam(TextureExportParam param, out int existsIdx)
	{
		existsIdx = _exportingList.FindIndex(param.EqualsAsKey);
		return existsIdx != -1;
	}
}
internal sealed class TextureExportParam
{
	public TextureExportTypes ExportType { get; }

	public ColorSpace ExportColorSpace { get; }

	public Texture PrimaryTexture { get; }

	public Texture SecondaryTexture { get; }

	public float OptionFactor { get; }

	public bool NeedsAlpha { get; set; }

	public Func<(Texture2D, bool IsDisposable)> Creator { get; set; }

	public TextureExportParam(TextureExportTypes exportType, ColorSpace exportColorSpace, Texture primaryTexture, Texture secondaryTexture, float optionFactor, bool needsAlpha, Func<(Texture2D, bool IsDisposable)> creator)
	{
		ExportType = exportType;
		ExportColorSpace = exportColorSpace;
		PrimaryTexture = primaryTexture;
		SecondaryTexture = secondaryTexture;
		OptionFactor = optionFactor;
		NeedsAlpha = needsAlpha;
		Creator = creator;
	}

	public bool EqualsAsKey(TextureExportParam other)
	{
		if (ExportType != other.ExportType)
		{
			return false;
		}
		switch (ExportType)
		{
		case TextureExportTypes.Srgb:
		case TextureExportTypes.Linear:
		case TextureExportTypes.Normal:
			return (Object)(object)PrimaryTexture == (Object)(object)other.PrimaryTexture;
		case TextureExportTypes.OcclusionMetallicRoughness:
			if ((Object)(object)PrimaryTexture == (Object)(object)other.PrimaryTexture)
			{
				return (Object)(object)SecondaryTexture == (Object)(object)other.SecondaryTexture;
			}
			return false;
		default:
			throw new ArgumentOutOfRangeException();
		}
	}
}
internal enum TextureExportTypes
{
	Srgb,
	Linear,
	OcclusionMetallicRoughness,
	Normal
}
public sealed class DeserializingTextureInfo
{
	public byte[] ImageData { get; }

	public string DataMimeType { get; }

	public ColorSpace ColorSpace { get; }

	public bool UseMipmap { get; }

	public FilterMode FilterMode { get; }

	public TextureWrapMode WrapModeU { get; }

	public TextureWrapMode WrapModeV { get; }

	public TextureImportTypes ImportTypes { get; }

	public DeserializingTextureInfo(byte[] imageData, string dataMimeType, ColorSpace colorSpace, bool useMipmap, FilterMode filterMode, TextureWrapMode wrapModeU, TextureWrapMode wrapModeV)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		ImageData = imageData;
		DataMimeType = dataMimeType;
		ColorSpace = colorSpace;
		UseMipmap = useMipmap;
		FilterMode = filterMode;
		WrapModeU = wrapModeU;
		WrapModeV = wrapModeV;
	}

	public DeserializingTextureInfo(byte[] imageData, string dataMimeType, ColorSpace colorSpace, SamplerParam samplerParam, TextureImportTypes importTypes)
	{
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		ImageData = imageData;
		DataMimeType = dataMimeType;
		ColorSpace = colorSpace;
		UseMipmap = samplerParam.EnableMipMap;
		FilterMode = samplerParam.FilterMode;
		WrapModeU = samplerParam.WrapModesU;
		WrapModeV = samplerParam.WrapModesV;
		ImportTypes = importTypes;
	}
}
public interface ITextureDeserializer
{
	Task<Texture2D> LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller);
}
public sealed class KtxTextureDeserializer : ITextureDeserializer
{
	public async Task<Texture2D> LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller)
	{
		return null;
	}
}
public readonly struct SamplerParam
{
	public TextureWrapMode WrapModesU { get; }

	public TextureWrapMode WrapModesV { get; }

	public FilterMode FilterMode { get; }

	public bool EnableMipMap { get; }

	public static SamplerParam Default => new SamplerParam((TextureWrapMode)0, (TextureWrapMode)0, (FilterMode)1, enableMipMap: true);

	public SamplerParam(TextureWrapMode wrapModesU, TextureWrapMode wrapModesV, FilterMode filterMode, bool enableMipMap)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//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_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: 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)
		WrapModesU = wrapModesU;
		WrapModesV = wrapModesV;
		FilterMode = filterMode;
		EnableMipMap = enableMipMap;
	}
}
public delegate Task<(byte[] binary, string mimeType)?> GetTextureBytesAsync();
public readonly struct TextureDescriptor
{
	public readonly string UnityObjectName;

	public readonly Vector2 Offset;

	public readonly Vector2 Scale;

	public readonly SamplerParam Sampler;

	public readonly TextureImportTypes TextureType;

	public readonly float MetallicFactor;

	public readonly float RoughnessFactor;

	public readonly GetTextureBytesAsync Index0;

	public readonly GetTextureBytesAsync Index1;

	public readonly GetTextureBytesAsync Index2;

	public readonly GetTextureBytesAsync Index3;

	public readonly GetTextureBytesAsync Index4;

	public readonly GetTextureBytesAsync Index5;

	public SubAssetKey SubAssetKey => new SubAssetKey(SubAssetKey.TextureType, UnityObjectName);

	public TextureDescriptor(string name, Vector2 offset, Vector2 scale, SamplerParam sampler, TextureImportTypes textureType, float metallicFactor, float roughnessFactor, GetTextureBytesAsync i0, GetTextureBytesAsync i1, GetTextureBytesAsync i2, GetTextureBytesAsync i3, GetTextureBytesAsync i4, GetTextureBytesAsync i5)
	{
		//IL_001b: 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_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		if (string.IsNullOrEmpty(name))
		{
			throw new ArgumentNullException("name");
		}
		UnityObjectName = name;
		Offset = offset;
		Scale = scale;
		Sampler = sampler;
		TextureType = textureType;
		MetallicFactor = metallicFactor;
		RoughnessFactor = roughnessFactor;
		Index0 = i0;
		Index1 = i1;
		Index2 = i2;
		Index3 = i3;
		Index4 = i4;
		Index5 = i5;
	}
}
public sealed class TextureDescriptorSet
{
	private readonly Dictionary<SubAssetKey, TextureDescriptor> _texDescDict = new Dictionary<SubAssetKey, TextureDescriptor>();

	public void Add(TextureDescriptor texDesc)
	{
		if (!_texDescDict.ContainsKey(texDesc.SubAssetKey))
		{
			_texDescDict.Add(texDesc.SubAssetKey, texDesc);
		}
	}

	public IEnumerable<TextureDescriptor> GetEnumerable()
	{
		foreach (KeyValuePair<SubAssetKey, TextureDescriptor> item in _texDescDict)
		{
			yield return item.Value;
		}
	}
}
public class TextureFactory : IResponsibilityForDestroyObjects, IDisposable
{
	private readonly IReadOnlyDictionary<SubAssetKey, Texture> _externalMap;

	private readonly bool _isLegacySquaredRoughness;

	private readonly Dictionary<SubAssetKey, Texture> _textureCache = new Dictionary<SubAssetKey, Texture>();

	public ITextureDeserializer TextureDeserializer { get; }

	public IReadOnlyDictionary<SubAssetKey, Texture> ConvertedTextures => _textureCache;

	public IReadOnlyDictionary<SubAssetKey, Texture> ExternalTextures => _externalMap;

	public TextureFactory(ITextureDeserializer textureDeserializer, IReadOnlyDictionary<SubAssetKey, Texture> externalTextures, bool isLegacySquaredRoughness)
	{
		TextureDeserializer = textureDeserializer;
		_externalMap = externalTextures;
		_isLegacySquaredRoughness = isLegacySquaredRoughness;
	}

	public void Dispose()
	{
		foreach (KeyValuePair<SubAssetKey, Texture> item in _textureCache)
		{
			item.Deconstruct(out var _, out var value);
			UnityObjectDestroyer.DestroyRuntimeOrEditor((Object)(object)value);
		}
		_textureCache.Clear();
	}

	public void TransferOwnership(TakeResponsibilityForDestroyObjectFunc take)
	{
		KeyValuePair<SubAssetKey, Texture>[] array = _textureCache.ToArray();
		for (int i = 0; i < array.Length; i++)
		{
			KeyValuePair<SubAssetKey, Texture> keyValuePair = array[i];
			var (key, obj) = (KeyValuePair<SubAssetKey, Texture>)(ref keyValuePair);
			take(key, (Object)(object)obj);
			_textureCache.Remove(key);
		}
	}

	public async Task<Texture> GetTextureAsync(TextureDescriptor texDesc, IAwaitCaller awaitCaller)
	{
		SubAssetKey subAssetKey = texDesc.SubAssetKey;
		if (_externalMap != null && _externalMap.TryGetValue(subAssetKey, out var value))
		{
			return value;
		}
		if (_textureCache.TryGetValue(subAssetKey, out var value2))
		{
			return value2;
		}
		switch (texDesc.TextureType)
		{
		case TextureImportTypes.NormalMap:
		{
			(byte[], string)? tuple2 = await texDesc.Index0();
			Texture2D val2 = await TextureDeserializer.LoadTextureAsync(new DeserializingTextureInfo(tuple2?.Item1, tuple2?.Item2, ColorSpace.Linear, texDesc.Sampler, texDesc.TextureType), awaitCaller);
			((Object)val2).name = subAssetKey.Name;
			_textureCache.Add(subAssetKey, (Texture)(object)val2);
			return (Texture)(object)val2;
		}
		case TextureImportTypes.StandardMap:
		{
			Texture2D metallicRoughnessTexture = null;
			Texture2D occlusionTexture = null;
			if (texDesc.Index0 != null)
			{
				(byte[], string)? tuple4 = await texDesc.Index0();
				metallicRoughnessTexture = await TextureDeserializer.LoadTextureAsync(new DeserializingTextureInfo(tuple4?.Item1, tuple4?.Item2, ColorSpace.Linear, texDesc.Sampler, texDesc.TextureType), awaitCaller);
			}
			if (texDesc.Index1 != null)
			{
				(byte[], string)? tuple5 = await texDesc.Index1();
				occlusionTexture = await TextureDeserializer.LoadTextureAsync(new DeserializingTextureInfo(tuple5?.Item1, tuple5?.Item2, ColorSpace.Linear, texDesc.Sampler, texDesc.TextureType), awaitCaller);
			}
			Texture2D val4 = OcclusionMetallicRoughnessConverter.Import(metallicRoughnessTexture, texDesc.MetallicFactor, texDesc.RoughnessFactor, occlusionTexture, _isLegacySquaredRoughness);
			((Object)val4).name = subAssetKey.Name;
			val4.SetSampler(in texDesc.Sampler);
			_textureCache.Add(subAssetKey, (Texture)(object)val4);
			UnityObjectDestroyer.DestroyRuntimeOrEditor((Object)(object)metallicRoughnessTexture);
			UnityObjectDestroyer.DestroyRuntimeOrEditor((Object)(object)occlusionTexture);
			return (Texture)(object)val4;
		}
		case TextureImportTypes.sRGB:
		{
			(byte[], string)? tuple3 = await texDesc.Index0();
			Texture2D val3 = await TextureDeserializer.LoadTextureAsync(new DeserializingTextureInfo(tuple3?.Item1, tuple3?.Item2, ColorSpace.sRGB, texDesc.Sampler, texDesc.TextureType), awaitCaller);
			((Object)val3).name = subAssetKey.Name;
			_textureCache.Add(subAssetKey, (Texture)(object)val3);
			return (Texture)(object)val3;
		}
		case TextureImportTypes.Linear:
		{
			(byte[], string)? tuple = await texDesc.Index0();
			Texture2D val = await TextureDeserializer.LoadTextureAsync(new DeserializingTextureInfo(tuple?.Item1, tuple?.Item2, ColorSpace.Linear, texDesc.Sampler, texDesc.TextureType), awaitCaller);
			((Object)val).name = subAssetKey.Name;
			_textureCache.Add(subAssetKey, (Texture)(object)val);
			return (Texture)(object)val;
		}
		default:
			throw new ArgumentOutOfRangeException();
		}
	}
}
public static class TextureImportName
{
	private const string NORMAL_SUFFIX = ".normal";

	private const string STANDARD_SUFFIX = ".standard";

	private const string LINEAR_SUFFIX = ".linear";

	public static string GetUnityObjectName(TextureImportTypes type, string gltfName, string uri)
	{
		switch (type)
		{
		case TextureImportTypes.StandardMap:
			return gltfName + ".standard";
		case TextureImportTypes.NormalMap:
			return gltfName + ".normal";
		case TextureImportTypes.Linear:
			return gltfName + ".linear";
		default:
			if (!string.IsNullOrEmpty(uri) && !uri.StartsWith("data:", StringComparison.Ordinal))
			{
				return Path.GetFileNameWithoutExtension(uri);
			}
			return gltfName;
		}
	}

	public static string RemoveSuffix(string src)
	{
		if (src.EndsWith(".normal"))
		{
			return src.Substring(0, src.Length - ".normal".Length);
		}
		if (src.EndsWith(".standard"))
		{
			return src.Substring(0, src.Length - ".standard".Length);
		}
		if (src.EndsWith(".linear"))
		{
			return src.Substring(0, src.Length - ".linear".Length);
		}
		return src;
	}
}
public enum TextureImportTypes
{
	sRGB,
	NormalMap,
	StandardMap,
	Linear
}
public sealed class UnitySupportedImageTypeDeserializer : ITextureDeserializer
{
	public async Task<Texture2D> LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller)
	{
		if (textureInfo.ImageData == null)
		{
			return null;
		}
		try
		{
			Texture2D texture = new Texture2D(2, 2, (TextureFormat)5, textureInfo.UseMipmap, textureInfo.ColorSpace == ColorSpace.Linear);
			ImageConversion.LoadImage(texture, textureInfo.ImageData);
			await awaitCaller.NextFrame();
			((Texture)texture).wrapModeU = textureInfo.WrapModeU;
			((Texture)texture).wrapModeV = textureInfo.WrapModeV;
			((Texture)texture).filterMode = textureInfo.FilterMode;
			return texture;
		}
		catch (Exception ex)
		{
			Debug.LogException(ex);
			return null;
		}
	}
}
public sealed class UnityTextureDeserializer : ITextureDeserializer
{
	private readonly UnitySupportedImageTypeDeserializer _unitySupportedDeserializer = new UnitySupportedImageTypeDeserializer();

	private readonly KtxTextureDeserializer _ktxTextureDeserializer = new KtxTextureDeserializer();

	public async Task<Texture2D> LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller)
	{
		Texture2D val = null;
		switch (textureInfo.DataMimeType)
		{
		case "image/png":
			val = await _unitySupportedDeserializer.LoadTextureAsync(textureInfo, awaitCaller);
			break;
		case "image/jpeg":
			val = await _unitySupportedDeserializer.LoadTextureAsync(textureInfo, awaitCaller);
			break;
		case "image/ktx2":
			val = await _ktxTextureDeserializer.LoadTextureAsync(textureInfo, awaitCaller);
			break;
		default:
			if (string.IsNullOrEmpty(textureInfo.DataMimeType))
			{
				Debug.Log((object)"Texture image MIME type is empty.");
			}
			else
			{
				Debug.Log((object)("Texture image MIME type `" + textureInfo.DataMimeType + "` is not supported."));
			}
			break;
		}
		if ((Object)(object)val == (Object)null)
		{
			Debug.Log((object)"Failed to load texture from image data.");
			val = new Texture2D(2, 2, (TextureFormat)5, textureInfo.UseMipmap, textureInfo.ColorSpace == ColorSpace.Linear);
		}
		return val;
	}
}
internal static class TextureExtensions
{
	public static bool HasMipMap(this Texture texture)
	{
		Texture2D val = (Texture2D)(object)((texture is Texture2D) ? texture : null);
		if (val != null)
		{
			return ((Texture)val).mipmapCount > 1;
		}
		RenderTexture val2 = (RenderTexture)(object)((texture is RenderTexture) ? texture : null);
		if (val2 != null)
		{
			return val2.useMipMap;
		}
		return false;
	}

	public static void SetSampler(this Texture2D texture, in SamplerParam param)
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)texture == (Object)null))
		{
			((Texture)texture).wrapModeU = param.WrapModesU;
			((Texture)texture).wrapModeV = param.WrapModesV;
			((Texture)texture).filterMode = param.FilterMode;
		}
	}
}
public static class Symbols
{
	public static bool VRM_DEVELOP => false;

	public static bool VRM_NORMALIZE_BLENDSHAPE_TANGENT => false;
}
public static class UnityObjectDestroyer
{
	public static void DestroyRuntimeOrEditor(Object o)
	{
		if (Application.isPlaying)
		{
			Object.Destroy(o);
		}
		else
		{
			Object.DestroyImmediate(o);
		}
	}
}

valheim_Data/Managed/VRMShaders.GLTF.UniUnlit.Runtime.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[64]
		{
			0, 0, 0, 1, 0, 0, 0, 56, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 71, 76, 84,
			70, 92, 85, 110, 105, 85, 110, 108, 105, 116,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 85, 110, 108, 105, 116, 85, 116, 105,
			108, 46, 99, 115
		};
		result.TypesData = new byte[34]
		{
			0, 0, 0, 0, 29, 85, 110, 105, 71, 76,
			84, 70, 46, 85, 110, 105, 85, 110, 108, 105,
			116, 124, 85, 110, 105, 85, 110, 108, 105, 116,
			85, 116, 105, 108
		};
		result.TotalFiles = 1;
		result.TotalTypes = 1;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniGLTF.UniUnlit;

public enum UniUnlitRenderMode
{
	Opaque,
	Cutout,
	Transparent
}
public enum UniUnlitCullMode
{
	Off = 0,
	Back = 2
}
public enum UniUnlitVertexColorBlendOp
{
	None,
	Multiply
}
public static class UniUnlitUtil
{
	public const string ShaderName = "UniGLTF/UniUnlit";

	public const string PropNameMainTex = "_MainTex";

	public const string PropNameColor = "_Color";

	public const string PropNameCutoff = "_Cutoff";

	public const string PropNameBlendMode = "_BlendMode";

	public const string PropNameCullMode = "_CullMode";

	[Obsolete("Use PropNameVColBlendMode")]
	public const string PropeNameVColBlendMode = "_VColBlendMode";

	public const string PropNameVColBlendMode = "_VColBlendMode";

	public const string PropNameSrcBlend = "_SrcBlend";

	public const string PropNameDstBlend = "_DstBlend";

	public const string PropNameZWrite = "_ZWrite";

	public const string PropNameStandardShadersRenderMode = "_Mode";

	public const string KeywordAlphaTestOn = "_ALPHATEST_ON";

	public const string KeywordAlphaBlendOn = "_ALPHABLEND_ON";

	public const string KeywordVertexColMul = "_VERTEXCOL_MUL";

	public const string TagRenderTypeKey = "RenderType";

	public const string TagRenderTypeValueOpaque = "Opaque";

	public const string TagRenderTypeValueTransparentCutout = "TransparentCutout";

	public const string TagRenderTypeValueTransparent = "Transparent";

	public static void SetRenderMode(Material material, UniUnlitRenderMode mode)
	{
		material.SetInt("_BlendMode", (int)mode);
	}

	public static void SetCullMode(Material material, UniUnlitCullMode mode)
	{
		material.SetInt("_CullMode", (int)mode);
	}

	public static void SetVColBlendMode(Material material, UniUnlitVertexColorBlendOp mode)
	{
		material.SetInt("_VColBlendMode", (int)mode);
	}

	public static UniUnlitRenderMode GetRenderMode(Material material)
	{
		return (UniUnlitRenderMode)material.GetInt("_BlendMode");
	}

	public static UniUnlitCullMode GetCullMode(Material material)
	{
		return (UniUnlitCullMode)material.GetInt("_CullMode");
	}

	public static UniUnlitVertexColorBlendOp GetVColBlendMode(Material material)
	{
		return (UniUnlitVertexColorBlendOp)material.GetInt("_VColBlendMode");
	}

	public static void ValidateProperties(Material material, bool isRenderModeChangedByUser = false)
	{
		SetupBlendMode(material, (UniUnlitRenderMode)material.GetFloat("_BlendMode"), isRenderModeChangedByUser);
		SetupVertexColorBlendOp(material, (UniUnlitVertexColorBlendOp)material.GetFloat("_VColBlendMode"));
	}

	private static void SetupBlendMode(Material material, UniUnlitRenderMode renderMode, bool isRenderModeChangedByUser = false)
	{
		switch (renderMode)
		{
		case UniUnlitRenderMode.Opaque:
			material.SetOverrideTag("RenderType", "Opaque");
			material.SetInt("_SrcBlend", 1);
			material.SetInt("_DstBlend", 0);
			material.SetInt("_ZWrite", 1);
			SetKeyword(material, "_ALPHATEST_ON", required: false);
			SetKeyword(material, "_ALPHABLEND_ON", required: false);
			if (isRenderModeChangedByUser)
			{
				material.renderQueue = -1;
			}
			break;
		case UniUnlitRenderMode.Cutout:
			material.SetOverrideTag("RenderType", "TransparentCutout");
			material.SetInt("_SrcBlend", 1);
			material.SetInt("_DstBlend", 0);
			material.SetInt("_ZWrite", 1);
			SetKeyword(material, "_ALPHATEST_ON", required: true);
			SetKeyword(material, "_ALPHABLEND_ON", required: false);
			if (isRenderModeChangedByUser)
			{
				material.renderQueue = 2450;
			}
			break;
		case UniUnlitRenderMode.Transparent:
			material.SetOverrideTag("RenderType", "Transparent");
			material.SetInt("_SrcBlend", 5);
			material.SetInt("_DstBlend", 10);
			material.SetInt("_ZWrite", 0);
			SetKeyword(material, "_ALPHATEST_ON", required: false);
			SetKeyword(material, "_ALPHABLEND_ON", required: true);
			if (isRenderModeChangedByUser)
			{
				material.renderQueue = 3000;
			}
			break;
		}
	}

	private static void SetupVertexColorBlendOp(Material material, UniUnlitVertexColorBlendOp vColBlendOp)
	{
		switch (vColBlendOp)
		{
		case UniUnlitVertexColorBlendOp.None:
			SetKeyword(material, "_VERTEXCOL_MUL", required: false);
			break;
		case UniUnlitVertexColorBlendOp.Multiply:
			SetKeyword(material, "_VERTEXCOL_MUL", required: true);
			break;
		}
	}

	private static void SetKeyword(Material mat, string keyword, bool required)
	{
		if (required)
		{
			mat.EnableKeyword(keyword);
		}
		else
		{
			mat.DisableKeyword(keyword);
		}
	}
}

valheim_Data/Managed/VRMShaders.VRM.IO.Runtime.dll

Decompiled a month ago
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[122]
		{
			0, 0, 0, 1, 0, 0, 0, 58, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 86, 82, 77,
			92, 73, 79, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 80, 114, 101, 83, 104, 97, 100, 101,
			114, 80, 114, 111, 112, 69, 120, 112, 111, 114,
			116, 101, 114, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 48, 92, 65, 115, 115, 101, 116,
			115, 92, 86, 82, 77, 83, 104, 97, 100, 101,
			114, 115, 92, 86, 82, 77, 92, 73, 79, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 83, 104,
			97, 100, 101, 114, 80, 114, 111, 112, 115, 46,
			99, 115
		};
		result.TypesData = new byte[142]
		{
			0, 0, 0, 0, 48, 85, 110, 105, 71, 76,
			84, 70, 46, 83, 104, 97, 100, 101, 114, 80,
			114, 111, 112, 69, 120, 112, 111, 114, 116, 101,
			114, 124, 80, 114, 101, 83, 104, 97, 100, 101,
			114, 80, 114, 111, 112, 69, 120, 112, 111, 114,
			116, 101, 114, 0, 0, 0, 0, 41, 85, 110,
			105, 71, 76, 84, 70, 46, 83, 104, 97, 100,
			101, 114, 80, 114, 111, 112, 69, 120, 112, 111,
			114, 116, 101, 114, 124, 83, 104, 97, 100, 101,
			114, 80, 114, 111, 112, 101, 114, 116, 121, 0,
			0, 0, 0, 38, 85, 110, 105, 71, 76, 84,
			70, 46, 83, 104, 97, 100, 101, 114, 80, 114,
			111, 112, 69, 120, 112, 111, 114, 116, 101, 114,
			124, 83, 104, 97, 100, 101, 114, 80, 114, 111,
			112, 115
		};
		result.TotalFiles = 2;
		result.TotalTypes = 3;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniGLTF.ShaderPropExporter;

public static class PreShaderPropExporter
{
	private const string ShaderName = "VRM/MToon";

	private static ShaderProps VRM_MToon = new ShaderProps
	{
		Properties = new ShaderProperty[42]
		{
			new ShaderProperty("_Cutoff", ShaderPropertyType.Range),
			new ShaderProperty("_Color", ShaderPropertyType.Color),
			new ShaderProperty("_ShadeColor", ShaderPropertyType.Color),
			new ShaderProperty("_MainTex", ShaderPropertyType.TexEnv),
			new ShaderProperty("_ShadeTexture", ShaderPropertyType.TexEnv),
			new ShaderProperty("_BumpScale", ShaderPropertyType.Float),
			new ShaderProperty("_BumpMap", ShaderPropertyType.TexEnv),
			new ShaderProperty("_ReceiveShadowRate", ShaderPropertyType.Range),
			new ShaderProperty("_ReceiveShadowTexture", ShaderPropertyType.TexEnv),
			new ShaderProperty("_ShadingGradeRate", ShaderPropertyType.Range),
			new ShaderProperty("_ShadingGradeTexture", ShaderPropertyType.TexEnv),
			new ShaderProperty("_ShadeShift", ShaderPropertyType.Range),
			new ShaderProperty("_ShadeToony", ShaderPropertyType.Range),
			new ShaderProperty("_LightColorAttenuation", ShaderPropertyType.Range),
			new ShaderProperty("_IndirectLightIntensity", ShaderPropertyType.Range),
			new ShaderProperty("_RimColor", ShaderPropertyType.Color),
			new ShaderProperty("_RimTexture", ShaderPropertyType.TexEnv),
			new ShaderProperty("_RimLightingMix", ShaderPropertyType.Range),
			new ShaderProperty("_RimFresnelPower", ShaderPropertyType.Range),
			new ShaderProperty("_RimLift", ShaderPropertyType.Range),
			new ShaderProperty("_SphereAdd", ShaderPropertyType.TexEnv),
			new ShaderProperty("_EmissionColor", ShaderPropertyType.Color),
			new ShaderProperty("_EmissionMap", ShaderPropertyType.TexEnv),
			new ShaderProperty("_OutlineWidthTexture", ShaderPropertyType.TexEnv),
			new ShaderProperty("_OutlineWidth", ShaderPropertyType.Range),
			new ShaderProperty("_OutlineScaledMaxDistance", ShaderPropertyType.Range),
			new ShaderProperty("_OutlineColor", ShaderPropertyType.Color),
			new ShaderProperty("_OutlineLightingMix", ShaderPropertyType.Range),
			new ShaderProperty("_UvAnimMaskTexture", ShaderPropertyType.TexEnv),
			new ShaderProperty("_UvAnimScrollX", ShaderPropertyType.Float),
			new ShaderProperty("_UvAnimScrollY", ShaderPropertyType.Float),
			new ShaderProperty("_UvAnimRotation", ShaderPropertyType.Float),
			new ShaderProperty("_MToonVersion", ShaderPropertyType.Float),
			new ShaderProperty("_DebugMode", ShaderPropertyType.Float),
			new ShaderProperty("_BlendMode", ShaderPropertyType.Float),
			new ShaderProperty("_OutlineWidthMode", ShaderPropertyType.Float),
			new ShaderProperty("_OutlineColorMode", ShaderPropertyType.Float),
			new ShaderProperty("_CullMode", ShaderPropertyType.Float),
			new ShaderProperty("_OutlineCullMode", ShaderPropertyType.Float),
			new ShaderProperty("_SrcBlend", ShaderPropertyType.Float),
			new ShaderProperty("_DstBlend", ShaderPropertyType.Float),
			new ShaderProperty("_ZWrite", ShaderPropertyType.Float)
		}
	};

	public static ShaderProps GetPropsForMToon()
	{
		return VRM_MToon;
	}
}
public enum ShaderPropertyType
{
	TexEnv,
	Color,
	Range,
	Float,
	Vector
}
public struct ShaderProperty
{
	public string Key;

	public ShaderPropertyType ShaderPropertyType;

	public ShaderProperty(string key, ShaderPropertyType propType)
	{
		Key = key;
		ShaderPropertyType = propType;
	}
}
public class ShaderProps
{
	public ShaderProperty[] Properties;
}

valheim_Data/Managed/VRMShaders.VRM10.Format.Runtime.dll

Decompiled a month ago
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[74]
		{
			0, 0, 0, 3, 0, 0, 0, 66, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 86, 82, 77,
			49, 48, 92, 70, 111, 114, 109, 97, 116, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 77, 97,
			116, 101, 114, 105, 97, 108, 115, 77, 84, 111,
			111, 110, 92, 70, 111, 114, 109, 97, 116, 46,
			103, 46, 99, 115
		};
		result.TypesData = new byte[189]
		{
			0, 0, 0, 0, 51, 85, 110, 105, 71, 76,
			84, 70, 46, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 86, 82, 77, 67, 95, 109,
			97, 116, 101, 114, 105, 97, 108, 115, 95, 109,
			116, 111, 111, 110, 124, 84, 101, 120, 116, 117,
			114, 101, 73, 110, 102, 111, 0, 0, 0, 0,
			63, 85, 110, 105, 71, 76, 84, 70, 46, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			86, 82, 77, 67, 95, 109, 97, 116, 101, 114,
			105, 97, 108, 115, 95, 109, 116, 111, 111, 110,
			124, 83, 104, 97, 100, 105, 110, 103, 83, 104,
			105, 102, 116, 84, 101, 120, 116, 117, 114, 101,
			73, 110, 102, 111, 0, 0, 0, 0, 60, 85,
			110, 105, 71, 76, 84, 70, 46, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 86, 82,
			77, 67, 95, 109, 97, 116, 101, 114, 105, 97,
			108, 115, 95, 109, 116, 111, 111, 110, 124, 86,
			82, 77, 67, 95, 109, 97, 116, 101, 114, 105,
			97, 108, 115, 95, 109, 116, 111, 111, 110
		};
		result.TotalFiles = 1;
		result.TotalTypes = 3;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UniGLTF.Extensions.VRMC_materials_mtoon;

public class TextureInfo
{
	public object Extensions;

	public object Extras;

	public int? Index;

	public int? TexCoord;
}
public class ShadingShiftTextureInfo
{
	public object Extensions;

	public object Extras;

	public int? Index;

	public int? TexCoord;

	public float? Scale;
}
public enum OutlineWidthMode
{
	none,
	worldCoordinates,
	screenCoordinates
}
public class VRMC_materials_mtoon
{
	public const string ExtensionName = "VRMC_materials_mtoon";

	public object Extensions;

	public object Extras;

	public string SpecVersion;

	public bool? TransparentWithZWrite;

	public int? RenderQueueOffsetNumber;

	public float[] ShadeColorFactor;

	public TextureInfo ShadeMultiplyTexture;

	public float? ShadingShiftFactor;

	public ShadingShiftTextureInfo ShadingShiftTexture;

	public float? ShadingToonyFactor;

	public float? GiEqualizationFactor;

	public float[] MatcapFactor;

	public TextureInfo MatcapTexture;

	public float[] ParametricRimColorFactor;

	public TextureInfo RimMultiplyTexture;

	public float? RimLightingMixFactor;

	public float? ParametricRimFresnelPowerFactor;

	public float? ParametricRimLiftFactor;

	public OutlineWidthMode OutlineWidthMode;

	public float? OutlineWidthFactor;

	public TextureInfo OutlineWidthMultiplyTexture;

	public float[] OutlineColorFactor;

	public float? OutlineLightingMixFactor;

	public TextureInfo UvAnimationMaskTexture;

	public float? UvAnimationScrollXSpeedFactor;

	public float? UvAnimationScrollYSpeedFactor;

	public float? UvAnimationRotationSpeedFactor;
}

valheim_Data/Managed/VRMShaders.VRM10.MToon10.Runtime.dll

Decompiled a month ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[1228]
		{
			0, 0, 0, 1, 0, 0, 0, 73, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 86, 82, 77,
			49, 48, 92, 77, 84, 111, 111, 110, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 92,
			77, 97, 116, 101, 114, 105, 97, 108, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 58, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 92, 86, 82,
			77, 49, 48, 92, 77, 84, 111, 111, 110, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			77, 84, 111, 111, 110, 49, 48, 67, 111, 110,
			116, 101, 120, 116, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 59, 92, 65, 115, 115, 101,
			116, 115, 92, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 92, 86, 82, 77, 49, 48, 92,
			77, 84, 111, 111, 110, 49, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 77, 84, 111, 111,
			110, 49, 48, 77, 105, 103, 114, 97, 116, 111,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 58, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 86, 82, 77, 49, 48, 92, 77, 84, 111,
			111, 110, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 77, 84, 111, 111, 110, 86, 97,
			108, 105, 100, 97, 116, 111, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 103, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 86, 82, 77,
			49, 48, 92, 77, 84, 111, 111, 110, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 116, 121, 83, 104, 97, 100, 101, 114,
			76, 97, 98, 92, 77, 84, 111, 111, 110, 68,
			101, 102, 105, 110, 101, 100, 86, 97, 108, 117,
			101, 115, 92, 77, 84, 111, 111, 110, 49, 48,
			69, 109, 105, 115, 115, 105, 118, 101, 77, 97,
			112, 75, 101, 121, 119, 111, 114, 100, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 101, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 92, 86, 82,
			77, 49, 48, 92, 77, 84, 111, 111, 110, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 116, 121, 83, 104, 97, 100, 101,
			114, 76, 97, 98, 92, 77, 84, 111, 111, 110,
			68, 101, 102, 105, 110, 101, 100, 86, 97, 108,
			117, 101, 115, 92, 77, 84, 111, 111, 110, 49,
			48, 78, 111, 114, 109, 97, 108, 77, 97, 112,
			75, 101, 121, 119, 111, 114, 100, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 103, 92, 65,
			115, 115, 101, 116, 115, 92, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 92, 86, 82, 77,
			49, 48, 92, 77, 84, 111, 111, 110, 49, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 85,
			110, 105, 116, 121, 83, 104, 97, 100, 101, 114,
			76, 97, 98, 92, 77, 84, 111, 111, 110, 68,
			101, 102, 105, 110, 101, 100, 86, 97, 108, 117,
			101, 115, 92, 77, 84, 111, 111, 110, 49, 48,
			79, 117, 116, 108, 105, 110, 101, 77, 111, 100,
			101, 75, 101, 121, 119, 111, 114, 100, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 104, 92,
			65, 115, 115, 101, 116, 115, 92, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 92, 86, 82,
			77, 49, 48, 92, 77, 84, 111, 111, 110, 49,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			85, 110, 105, 116, 121, 83, 104, 97, 100, 101,
			114, 76, 97, 98, 92, 77, 84, 111, 111, 110,
			68, 101, 102, 105, 110, 101, 100, 86, 97, 108,
			117, 101, 115, 92, 77, 84, 111, 111, 110, 49,
			48, 80, 97, 114, 97, 109, 101, 116, 101, 114,
			77, 97, 112, 75, 101, 121, 119, 111, 114, 100,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			98, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 92,
			86, 82, 77, 49, 48, 92, 77, 84, 111, 111,
			110, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 116, 121, 83, 104, 97,
			100, 101, 114, 76, 97, 98, 92, 77, 84, 111,
			111, 110, 68, 101, 102, 105, 110, 101, 100, 86,
			97, 108, 117, 101, 115, 92, 77, 84, 111, 111,
			110, 49, 48, 82, 105, 109, 77, 97, 112, 75,
			101, 121, 119, 111, 114, 100, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 81, 92, 65, 115,
			115, 101, 116, 115, 92, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 92, 86, 82, 77, 49,
			48, 92, 77, 84, 111, 111, 110, 49, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 85, 110,
			105, 116, 121, 83, 104, 97, 100, 101, 114, 76,
			97, 98, 92, 80, 114, 111, 112, 101, 114, 116,
			105, 101, 115, 92, 77, 84, 111, 111, 110, 49,
			48, 77, 101, 116, 97, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 87, 92, 65, 115, 115,
			101, 116, 115, 92, 86, 82, 77, 83, 104, 97,
			100, 101, 114, 115, 92, 86, 82, 77, 49, 48,
			92, 77, 84, 111, 111, 110, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 85, 110, 105,
			116, 121, 83, 104, 97, 100, 101, 114, 76, 97,
			98, 92, 80, 114, 111, 112, 101, 114, 116, 105,
			101, 115, 92, 77, 84, 111, 111, 110, 49, 48,
			80, 114, 111, 112, 101, 114, 116, 105, 101, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			103, 92, 65, 115, 115, 101, 116, 115, 92, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 92,
			86, 82, 77, 49, 48, 92, 77, 84, 111, 111,
			110, 49, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 116, 121, 83, 104, 97,
			100, 101, 114, 76, 97, 98, 92, 83, 104, 97,
			100, 101, 114, 76, 97, 98, 68, 101, 102, 105,
			110, 101, 100, 86, 97, 108, 117, 101, 115, 92,
			85, 110, 105, 116, 121, 65, 108, 112, 104, 97,
			77, 111, 100, 101, 75, 101, 121, 119, 111, 114,
			100, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 96, 92, 65, 115, 115, 101, 116, 115, 92,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			92, 86, 82, 77, 49, 48, 92, 77, 84, 111,
			111, 110, 49, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 85, 110, 105, 116, 121, 83, 104,
			97, 100, 101, 114, 76, 97, 98, 92, 83, 104,
			97, 100, 101, 114, 76, 97, 98, 68, 101, 102,
			105, 110, 101, 100, 86, 97, 108, 117, 101, 115,
			92, 85, 110, 105, 116, 121, 82, 101, 110, 100,
			101, 114, 84, 97, 103, 46, 99, 115
		};
		result.TypesData = new byte[737]
		{
			0, 0, 0, 0, 51, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 46, 86, 82, 77, 49,
			48, 46, 77, 84, 111, 111, 110, 49, 48, 46,
			82, 117, 110, 116, 105, 109, 101, 124, 77, 97,
			116, 101, 114, 105, 97, 108, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			47, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 46, 86, 82, 77, 49, 48, 46, 77, 84,
			111, 111, 110, 49, 48, 46, 82, 117, 110, 116,
			105, 109, 101, 124, 77, 84, 111, 111, 110, 49,
			48, 67, 111, 110, 116, 101, 120, 116, 0, 0,
			0, 0, 48, 86, 82, 77, 83, 104, 97, 100,
			101, 114, 115, 46, 86, 82, 77, 49, 48, 46,
			77, 84, 111, 111, 110, 49, 48, 46, 82, 117,
			110, 116, 105, 109, 101, 124, 77, 84, 111, 111,
			110, 49, 48, 77, 105, 103, 114, 97, 116, 111,
			114, 0, 0, 0, 0, 47, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 46, 86, 82, 77,
			49, 48, 46, 77, 84, 111, 111, 110, 49, 48,
			46, 82, 117, 110, 116, 105, 109, 101, 124, 77,
			84, 111, 111, 110, 86, 97, 108, 105, 100, 97,
			116, 111, 114, 0, 0, 0, 0, 58, 86, 82,
			77, 83, 104, 97, 100, 101, 114, 115, 46, 86,
			82, 77, 49, 48, 46, 77, 84, 111, 111, 110,
			49, 48, 46, 82, 117, 110, 116, 105, 109, 101,
			124, 77, 84, 111, 111, 110, 49, 48, 69, 109,
			105, 115, 115, 105, 118, 101, 77, 97, 112, 75,
			101, 121, 119, 111, 114, 100, 0, 0, 0, 0,
			56, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 46, 86, 82, 77, 49, 48, 46, 77, 84,
			111, 111, 110, 49, 48, 46, 82, 117, 110, 116,
			105, 109, 101, 124, 77, 84, 111, 111, 110, 49,
			48, 78, 111, 114, 109, 97, 108, 77, 97, 112,
			75, 101, 121, 119, 111, 114, 100, 0, 0, 0,
			0, 58, 86, 82, 77, 83, 104, 97, 100, 101,
			114, 115, 46, 86, 82, 77, 49, 48, 46, 77,
			84, 111, 111, 110, 49, 48, 46, 82, 117, 110,
			116, 105, 109, 101, 124, 77, 84, 111, 111, 110,
			49, 48, 79, 117, 116, 108, 105, 110, 101, 77,
			111, 100, 101, 75, 101, 121, 119, 111, 114, 100,
			0, 0, 0, 0, 59, 86, 82, 77, 83, 104,
			97, 100, 101, 114, 115, 46, 86, 82, 77, 49,
			48, 46, 77, 84, 111, 111, 110, 49, 48, 46,
			82, 117, 110, 116, 105, 109, 101, 124, 77, 84,
			111, 111, 110, 49, 48, 80, 97, 114, 97, 109,
			101, 116, 101, 114, 77, 97, 112, 75, 101, 121,
			119, 111, 114, 100, 0, 0, 0, 0, 53, 86,
			82, 77, 83, 104, 97, 100, 101, 114, 115, 46,
			86, 82, 77, 49, 48, 46, 77, 84, 111, 111,
			110, 49, 48, 46, 82, 117, 110, 116, 105, 109,
			101, 124, 77, 84, 111, 111, 110, 49, 48, 82,
			105, 109, 77, 97, 112, 75, 101, 121, 119, 111,
			114, 100, 0, 0, 0, 0, 44, 86, 82, 77,
			83, 104, 97, 100, 101, 114, 115, 46, 86, 82,
			77, 49, 48, 46, 77, 84, 111, 111, 110, 49,
			48, 46, 82, 117, 110, 116, 105, 109, 101, 124,
			77, 84, 111, 111, 110, 49, 48, 77, 101, 116,
			97, 0, 0, 0, 0, 50, 86, 82, 77, 83,
			104, 97, 100, 101, 114, 115, 46, 86, 82, 77,
			49, 48, 46, 77, 84, 111, 111, 110, 49, 48,
			46, 82, 117, 110, 116, 105, 109, 101, 124, 77,
			84, 111, 111, 110, 49, 48, 80, 114, 111, 112,
			101, 114, 116, 105, 101, 115, 0, 0, 0, 0,
			54, 86, 82, 77, 83, 104, 97, 100, 101, 114,
			115, 46, 86, 82, 77, 49, 48, 46, 77, 84,
			111, 111, 110, 49, 48, 46, 82, 117, 110, 116,
			105, 109, 101, 124, 85, 110, 105, 116, 121, 65,
			108, 112, 104, 97, 77, 111, 100, 101, 75, 101,
			121, 119, 111, 114, 100, 0, 0, 0, 0, 47,
			86, 82, 77, 83, 104, 97, 100, 101, 114, 115,
			46, 86, 82, 77, 49, 48, 46, 77, 84, 111,
			111, 110, 49, 48, 46, 82, 117, 110, 116, 105,
			109, 101, 124, 85, 110, 105, 116, 121, 82, 101,
			110, 100, 101, 114, 84, 97, 103
		};
		result.TotalFiles = 13;
		result.TotalTypes = 13;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace VRMShaders.VRM10.MToon10.Runtime;

public static class MaterialExtensions
{
	public static void SetKeyword(this Material mat, string keyword, bool isEnabled)
	{
		if (isEnabled)
		{
			mat.EnableKeyword(keyword);
		}
		else
		{
			mat.DisableKeyword(keyword);
		}
	}

	public static int GetInt(this Material mat, MToon10Prop prop)
	{
		return mat.GetInt(prop.ToUnityShaderLabName());
	}

	public static void SetInt(this Material mat, MToon10Prop prop, int val)
	{
		mat.SetInt(prop.ToUnityShaderLabName(), val);
	}

	public static Texture GetTexture(this Material mat, MToon10Prop prop)
	{
		return mat.GetTexture(prop.ToUnityShaderLabName());
	}

	public static Vector2 GetTextureScale(this Material mat, MToon10Prop prop)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		return mat.GetTextureScale(prop.ToUnityShaderLabName());
	}

	public static Vector2 GetTextureOffset(this Material mat, MToon10Prop prop)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		return mat.GetTextureOffset(prop.ToUnityShaderLabName());
	}

	public static float GetFloat(this Material mat, MToon10Prop prop)
	{
		return mat.GetFloat(prop.ToUnityShaderLabName());
	}

	public static Color GetColor(this Material mat, MToon10Prop prop)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		return mat.GetColor(prop.ToUnityShaderLabName());
	}
}
public sealed class MToon10Context
{
	private readonly Material _material;

	public MToon10AlphaMode AlphaMode => (MToon10AlphaMode)_material.GetInt(MToon10Prop.AlphaMode);

	public MToon10TransparentWithZWriteMode TransparentWithZWriteMode => (MToon10TransparentWithZWriteMode)_material.GetInt(MToon10Prop.TransparentWithZWrite);

	public float AlphaCutoff => _material.GetFloat(MToon10Prop.AlphaCutoff);

	public int RenderQueueOffsetNumber => _material.GetInt(MToon10Prop.RenderQueueOffsetNumber);

	public MToon10DoubleSidedMode DoubleSidedMode => (MToon10DoubleSidedMode)_material.GetInt(MToon10Prop.DoubleSided);

	public Color BaseColorFactorSrgb => _material.GetColor(MToon10Prop.BaseColorFactor);

	public Texture BaseColorTexture => _material.GetTexture(MToon10Prop.BaseColorTexture);

	public Color ShadeColorFactorSrgb => _material.GetColor(MToon10Prop.ShadeColorFactor);

	public Texture ShadeColorTexture => _material.GetTexture(MToon10Prop.ShadeColorTexture);

	public Texture NormalTexture => _material.GetTexture(MToon10Prop.NormalTexture);

	public float NormalTextureScale => _material.GetFloat(MToon10Prop.NormalTextureScale);

	public float ShadingShiftFactor => _material.GetFloat(MToon10Prop.ShadingShiftFactor);

	public Texture ShadingShiftTexture => _material.GetTexture(MToon10Prop.ShadingShiftTexture);

	public float ShadingShiftTextureScale => _material.GetFloat(MToon10Prop.ShadingShiftTextureScale);

	public float ShadingToonyFactor => _material.GetFloat(MToon10Prop.ShadingToonyFactor);

	public float GiEqualizationFactor => _material.GetFloat(MToon10Prop.GiEqualizationFactor);

	public Color EmissiveFactorLinear => _material.GetColor(MToon10Prop.EmissiveFactor);

	public Texture EmissiveTexture => _material.GetTexture(MToon10Prop.EmissiveTexture);

	public Color MatcapColorFactorSrgb => _material.GetColor(MToon10Prop.MatcapColorFactor);

	public Texture MatcapTexture => _material.GetTexture(MToon10Prop.MatcapTexture);

	public Color ParametricRimColorFactorSrgb => _material.GetColor(MToon10Prop.ParametricRimColorFactor);

	public float ParametricRimFresnelPowerFactor => _material.GetFloat(MToon10Prop.ParametricRimFresnelPowerFactor);

	public float ParametricRimLiftFactor => _material.GetFloat(MToon10Prop.ParametricRimLiftFactor);

	public Texture RimMultiplyTexture => _material.GetTexture(MToon10Prop.RimMultiplyTexture);

	public float RimLightingMixFactor => _material.GetFloat(MToon10Prop.RimLightingMixFactor);

	public MToon10OutlineMode OutlineWidthMode => (MToon10OutlineMode)_material.GetInt(MToon10Prop.OutlineWidthMode);

	public float OutlineWidthFactor => _material.GetFloat(MToon10Prop.OutlineWidthFactor);

	public Texture OutlineWidthMultiplyTexture => _material.GetTexture(MToon10Prop.OutlineWidthMultiplyTexture);

	public Color OutlineColorFactorSrgb => _material.GetColor(MToon10Prop.OutlineColorFactor);

	public float OutlineLightingMixFactor => _material.GetFloat(MToon10Prop.OutlineLightingMixFactor);

	public Texture UvAnimationMaskTexture => _material.GetTexture(MToon10Prop.UvAnimationMaskTexture);

	public float UvAnimationScrollXSpeedFactor => _material.GetFloat(MToon10Prop.UvAnimationScrollXSpeedFactor);

	public float UvAnimationScrollYSpeedFactor => _material.GetFloat(MToon10Prop.UvAnimationScrollYSpeedFactor);

	public float UvAnimationRotationSpeedFactor => _material.GetFloat(MToon10Prop.UvAnimationRotationSpeedFactor);

	public Vector2 TextureScale => _material.GetTextureScale(MToon10Prop.BaseColorTexture);

	public Vector2 TextureOffset => _material.GetTextureOffset(MToon10Prop.BaseColorTexture);

	public MToon10Context(Material material)
	{
		_material = material;
	}

	public void Validate()
	{
		new MToonValidator(_material).Validate();
	}
}
public static class MToon10Migrator
{
	public static float MigrateToShadingToony(float shadingToony0X, float shadingShift0X)
	{
		var (num, num2) = GetShadingRange0X(shadingToony0X, shadingShift0X);
		return Mathf.Clamp((2f - (num2 - num)) * 0.5f, 0f, 1f);
	}

	public static float MigrateToShadingShift(float shadingToony0X, float shadingShift0X)
	{
		(float min, float max) shadingRange0X = GetShadingRange0X(shadingToony0X, shadingShift0X);
		var (num, _) = shadingRange0X;
		return Mathf.Clamp((shadingRange0X.max + num) * 0.5f * -1f, -1f, 1f);
	}

	public static float MigrateToGiEqualization(float giIntensity0X)
	{
		return Mathf.Clamp01(1f - giIntensity0X);
	}

	private static (float min, float max) GetShadingRange0X(float shadingToony0X, float shadingShift0X)
	{
		float item = Mathf.Lerp(1f, shadingShift0X, shadingToony0X);
		return (shadingShift0X, item);
	}
}
public sealed class MToonValidator
{
	private readonly Material _material;

	public MToonValidator(Material material)
	{
		_material = material;
	}

	public void Validate()
	{
		MToon10AlphaMode @int = (MToon10AlphaMode)_material.GetInt(MToon10Prop.AlphaMode);
		MToon10TransparentWithZWriteMode int2 = (MToon10TransparentWithZWriteMode)_material.GetInt(MToon10Prop.TransparentWithZWrite);
		int int3 = _material.GetInt(MToon10Prop.RenderQueueOffsetNumber);
		MToon10DoubleSidedMode int4 = (MToon10DoubleSidedMode)_material.GetInt(MToon10Prop.DoubleSided);
		SetUnityShaderPassSettings(_material, @int, int2, int3, int4);
		SetUnityShaderVariants(_material);
	}

	private static void SetUnityShaderPassSettings(Material material, MToon10AlphaMode alphaMode, MToon10TransparentWithZWriteMode zWriteMode, int renderQueueOffset, MToon10DoubleSidedMode doubleSidedMode)
	{
		material.SetInt(MToon10Prop.AlphaMode, (int)alphaMode);
		material.SetInt(MToon10Prop.TransparentWithZWrite, (int)zWriteMode);
		material.SetInt(MToon10Prop.DoubleSided, (int)doubleSidedMode);
		switch (alphaMode)
		{
		case MToon10AlphaMode.Opaque:
			material.SetOverrideTag("RenderType", "Opaque");
			material.SetInt(MToon10Prop.UnitySrcBlend, 1);
			material.SetInt(MToon10Prop.UnityDstBlend, 0);
			material.SetInt(MToon10Prop.UnityZWrite, 1);
			material.SetInt(MToon10Prop.UnityAlphaToMask, 0);
			renderQueueOffset = 0;
			material.renderQueue = 2000;
			break;
		case MToon10AlphaMode.Cutout:
			material.SetOverrideTag("RenderType", "TransparentCutout");
			material.SetInt(MToon10Prop.UnitySrcBlend, 1);
			material.SetInt(MToon10Prop.UnityDstBlend, 0);
			material.SetInt(MToon10Prop.UnityZWrite, 1);
			material.SetInt(MToon10Prop.UnityAlphaToMask, 1);
			renderQueueOffset = 0;
			material.renderQueue = 2450;
			break;
		case MToon10AlphaMode.Transparent:
			if (zWriteMode == MToon10TransparentWithZWriteMode.Off)
			{
				material.SetOverrideTag("RenderType", "Transparent");
				material.SetInt(MToon10Prop.UnitySrcBlend, 5);
				material.SetInt(MToon10Prop.UnityDstBlend, 10);
				material.SetInt(MToon10Prop.UnityZWrite, 0);
				material.SetInt(MToon10Prop.UnityAlphaToMask, 0);
				renderQueueOffset = Mathf.Clamp(renderQueueOffset, -9, 0);
				material.renderQueue = 3000 + renderQueueOffset;
				break;
			}
			if (zWriteMode == MToon10TransparentWithZWriteMode.On)
			{
				material.SetOverrideTag("RenderType", "Transparent");
				material.SetInt(MToon10Prop.UnitySrcBlend, 5);
				material.SetInt(MToon10Prop.UnityDstBlend, 10);
				material.SetInt(MToon10Prop.UnityZWrite, 1);
				material.SetInt(MToon10Prop.UnityAlphaToMask, 0);
				renderQueueOffset = Mathf.Clamp(renderQueueOffset, 0, 9);
				material.renderQueue = 2501 + renderQueueOffset;
				break;
			}
			goto default;
		default:
			throw new ArgumentOutOfRangeException("alphaMode", alphaMode, null);
		}
		switch (doubleSidedMode)
		{
		case MToon10DoubleSidedMode.Off:
			material.SetInt(MToon10Prop.UnityCullMode, 2);
			break;
		case MToon10DoubleSidedMode.On:
			material.SetInt(MToon10Prop.UnityCullMode, 0);
			break;
		default:
			throw new ArgumentOutOfRangeException("doubleSidedMode", doubleSidedMode, null);
		}
		material.SetInt(MToon10Prop.RenderQueueOffsetNumber, renderQueueOffset);
	}

	private static void SetUnityCullingSettings(Material material, MToon10DoubleSidedMode doubleSidedMode)
	{
	}

	private static void SetUnityShaderVariants(Material material)
	{
		material.SetKeyword("_ALPHATEST_ON", material.GetInt(MToon10Prop.AlphaMode) == 1);
		material.SetKeyword("_ALPHABLEND_ON", material.GetInt(MToon10Prop.AlphaMode) == 2);
		material.SetKeyword("_ALPHAPREMULTIPLY_ON", isEnabled: false);
		material.SetKeyword("_NORMALMAP", (Object)(object)material.GetTexture(MToon10Prop.NormalTexture) != (Object)null);
		material.SetKeyword("_MTOON_EMISSIVEMAP", (Object)(object)material.GetTexture(MToon10Prop.EmissiveTexture) != (Object)null);
		material.SetKeyword("_MTOON_RIMMAP", (Object)(object)material.GetTexture(MToon10Prop.MatcapTexture) != (Object)null || (Object)(object)material.GetTexture(MToon10Prop.RimMultiplyTexture) != (Object)null);
		material.SetKeyword("_MTOON_PARAMETERMAP", (Object)(object)material.GetTexture(MToon10Prop.ShadingShiftTexture) != (Object)null || (Object)(object)material.GetTexture(MToon10Prop.OutlineWidthMultiplyTexture) != (Object)null || (Object)(object)material.GetTexture(MToon10Prop.UvAnimationMaskTexture) != (Object)null);
		material.SetKeyword("_MTOON_OUTLINE_WORLD", material.GetInt(MToon10Prop.OutlineWidthMode) == 1);
		material.SetKeyword("_MTOON_OUTLINE_SCREEN", material.GetInt(MToon10Prop.OutlineWidthMode) == 2);
	}
}
public enum MToon10AlphaMode
{
	Opaque,
	Cutout,
	Transparent
}
public enum MToon10DoubleSidedMode
{
	Off,
	On
}
public static class MToon10EmissiveMapKeyword
{
	public const string On = "_MTOON_EMISSIVEMAP";
}
public static class MToon10NormalMapKeyword
{
	public const string On = "_NORMALMAP";
}
public enum MToon10OutlineMode
{
	None,
	World,
	Screen
}
public static class MToon10OutlineModeKeyword
{
	public const string World = "_MTOON_OUTLINE_WORLD";

	public const string Screen = "_MTOON_OUTLINE_SCREEN";
}
public static class MToon10ParameterMapKeyword
{
	public const string On = "_MTOON_PARAMETERMAP";
}
public static class MToon10RimMapKeyword
{
	public const string On = "_MTOON_RIMMAP";
}
public enum MToon10TransparentWithZWriteMode
{
	Off,
	On
}
public static class MToon10Meta
{
	public static readonly string UnityShaderName = "VRM10/MToon10";

	public static readonly string URPUnityShaderName = "VRM10/Universal Render Pipeline/MToon10";
}
public enum MToon10Prop
{
	AlphaMode,
	TransparentWithZWrite,
	AlphaCutoff,
	RenderQueueOffsetNumber,
	DoubleSided,
	BaseColorFactor,
	BaseColorTexture,
	ShadeColorFactor,
	ShadeColorTexture,
	NormalTexture,
	NormalTextureScale,
	ShadingShiftFactor,
	ShadingShiftTexture,
	ShadingShiftTextureScale,
	ShadingToonyFactor,
	GiEqualizationFactor,
	EmissiveFactor,
	EmissiveTexture,
	MatcapColorFactor,
	MatcapTexture,
	ParametricRimColorFactor,
	ParametricRimFresnelPowerFactor,
	ParametricRimLiftFactor,
	RimMultiplyTexture,
	RimLightingMixFactor,
	OutlineWidthMode,
	OutlineWidthFactor,
	OutlineWidthMultiplyTexture,
	OutlineColorFactor,
	OutlineLightingMixFactor,
	UvAnimationMaskTexture,
	UvAnimationScrollXSpeedFactor,
	UvAnimationScrollYSpeedFactor,
	UvAnimationRotationSpeedFactor,
	UnityCullMode,
	UnitySrcBlend,
	UnityDstBlend,
	UnityZWrite,
	UnityAlphaToMask,
	EditorEditMode
}
public static class MToon10Properties
{
	private static readonly Dictionary<MToon10Prop, string> _unityShaderLabNames = new Dictionary<MToon10Prop, string>
	{
		[MToon10Prop.AlphaMode] = "_AlphaMode",
		[MToon10Prop.TransparentWithZWrite] = "_TransparentWithZWrite",
		[MToon10Prop.AlphaCutoff] = "_Cutoff",
		[MToon10Prop.RenderQueueOffsetNumber] = "_RenderQueueOffset",
		[MToon10Prop.DoubleSided] = "_DoubleSided",
		[MToon10Prop.BaseColorFactor] = "_Color",
		[MToon10Prop.BaseColorTexture] = "_MainTex",
		[MToon10Prop.ShadeColorFactor] = "_ShadeColor",
		[MToon10Prop.ShadeColorTexture] = "_ShadeTex",
		[MToon10Prop.NormalTexture] = "_BumpMap",
		[MToon10Prop.NormalTextureScale] = "_BumpScale",
		[MToon10Prop.ShadingShiftFactor] = "_ShadingShiftFactor",
		[MToon10Prop.ShadingShiftTexture] = "_ShadingShiftTex",
		[MToon10Prop.ShadingShiftTextureScale] = "_ShadingShiftTexScale",
		[MToon10Prop.ShadingToonyFactor] = "_ShadingToonyFactor",
		[MToon10Prop.GiEqualizationFactor] = "_GiEqualization",
		[MToon10Prop.EmissiveFactor] = "_EmissionColor",
		[MToon10Prop.EmissiveTexture] = "_EmissionMap",
		[MToon10Prop.MatcapColorFactor] = "_MatcapColor",
		[MToon10Prop.MatcapTexture] = "_MatcapTex",
		[MToon10Prop.ParametricRimColorFactor] = "_RimColor",
		[MToon10Prop.ParametricRimFresnelPowerFactor] = "_RimFresnelPower",
		[MToon10Prop.ParametricRimLiftFactor] = "_RimLift",
		[MToon10Prop.RimMultiplyTexture] = "_RimTex",
		[MToon10Prop.RimLightingMixFactor] = "_RimLightingMix",
		[MToon10Prop.OutlineWidthMode] = "_OutlineWidthMode",
		[MToon10Prop.OutlineWidthFactor] = "_OutlineWidth",
		[MToon10Prop.OutlineWidthMultiplyTexture] = "_OutlineWidthTex",
		[MToon10Prop.OutlineColorFactor] = "_OutlineColor",
		[MToon10Prop.OutlineLightingMixFactor] = "_OutlineLightingMix",
		[MToon10Prop.UvAnimationMaskTexture] = "_UvAnimMaskTex",
		[MToon10Prop.UvAnimationScrollXSpeedFactor] = "_UvAnimScrollXSpeed",
		[MToon10Prop.UvAnimationScrollYSpeedFactor] = "_UvAnimScrollYSpeed",
		[MToon10Prop.UvAnimationRotationSpeedFactor] = "_UvAnimRotationSpeed",
		[MToon10Prop.UnityCullMode] = "_M_CullMode",
		[MToon10Prop.UnitySrcBlend] = "_M_SrcBlend",
		[MToon10Prop.UnityDstBlend] = "_M_DstBlend",
		[MToon10Prop.UnityZWrite] = "_M_ZWrite",
		[MToon10Prop.UnityAlphaToMask] = "_M_AlphaToMask",
		[MToon10Prop.EditorEditMode] = "_M_EditMode"
	};

	public static IReadOnlyDictionary<MToon10Prop, string> UnityShaderLabNames => _unityShaderLabNames;

	public static string ToUnityShaderLabName(this MToon10Prop prop)
	{
		return UnityShaderLabNames[prop];
	}
}
public static class UnityAlphaModeKeyword
{
	public const string AlphaTest = "_ALPHATEST_ON";

	public const string AlphaBlend = "_ALPHABLEND_ON";

	public const string AlphaPremultiply = "_ALPHAPREMULTIPLY_ON";
}
public enum UnityAlphaToMaskMode
{
	Off,
	On
}
public enum UnityCullMode
{
	Off = 0,
	Back = 2
}
public static class UnityRenderTag
{
	public const string Key = "RenderType";

	public const string OpaqueValue = "Opaque";

	public const string TransparentCutoutValue = "TransparentCutout";

	public const string TransparentValue = "Transparent";
}
public enum UnityZWriteMode
{
	Off,
	On
}