Decompiled source of MirageExperimental v0.0.60

BepInEx/plugins/Mirage.Compatibility.dll

Decompiled 7 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using LethalConfig;
using LethalConfig.AutoConfig;
using LethalSettings.UI;
using LethalSettings.UI.Components;
using LobbyCompatibility.Enums;
using LobbyCompatibility.Features;
using Microsoft.FSharp.Core;

[assembly: FSharpInterfaceDataVersion(2, 0, 0)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("LethalConfig")]
[assembly: IgnoresAccessChecksTo("LethalSettings")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("Mirage.Compatibility")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+97f34ecc8986c8c0a85155e2bf49f25f63e6afe6")]
[assembly: AssemblyProduct("Mirage.Compatibility")]
[assembly: AssemblyTitle("Mirage.Compatibility")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public static class AssemblyInfo
{
}
namespace <StartupCode$Mirage-Compatibility>
{
	internal static class $AssemblyInfo
	{
	}
}
namespace Mirage
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class Compatibility
	{
		[Serializable]
		internal sealed class run@22 : FSharpFunc<Unit, Unit>
		{
			public Assembly assembly;

			public ConfigFile configFile;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal run@22(Assembly assembly, ConfigFile configFile)
			{
				this.assembly = assembly;
				this.configFile = configFile;
			}

			public override Unit Invoke(Unit unitVar0)
			{
				//IL_0020: 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_0023: Unknown result type (might be due to invalid IL or missing references)
				List<ConfigFileAssemblyPair> lateConfigFiles = LethalConfigManager.LateConfigFiles;
				ConfigFileAssemblyPair val = default(ConfigFileAssemblyPair);
				((ConfigFileAssemblyPair)(ref val)).ConfigFile = configFile;
				((ConfigFileAssemblyPair)(ref val)).Assembly = assembly;
				ConfigFileAssemblyPair item = val;
				lateConfigFiles.Add(item);
				return null;
			}
		}

		[Serializable]
		internal sealed class run@32-1 : FSharpFunc<Unit, Unit>
		{
			public string pluginName;

			public string pluginVersion;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal run@32-1(string pluginName, string pluginVersion)
			{
				this.pluginName = pluginName;
				this.pluginVersion = pluginVersion;
			}

			public override Unit Invoke(Unit unitVar0)
			{
				PluginHelper.RegisterPlugin(pluginName, Version.Parse(pluginVersion), (CompatibilityLevel)2, (VersionStrictness)2);
				return null;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class LethalSettingsArgs
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal string pluginName@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal string pluginId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal string pluginVersion@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpFunc<Unit, float> getLocalPlayerVolume@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpFunc<float, Unit> setLocalPlayerVolume@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpFunc<Unit, bool> getNeverDeleteRecordings@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpFunc<bool, Unit> setNeverDeleteRecordings@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpFunc<Unit, bool> getAllowRecordVoice@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpFunc<bool, Unit> setAllowRecordVoice@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public string pluginName
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return pluginName@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public string pluginId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return pluginId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public string pluginVersion
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return pluginVersion@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpFunc<Unit, float> getLocalPlayerVolume
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return getLocalPlayerVolume@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpFunc<float, Unit> setLocalPlayerVolume
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return setLocalPlayerVolume@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpFunc<Unit, bool> getNeverDeleteRecordings
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return getNeverDeleteRecordings@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpFunc<bool, Unit> setNeverDeleteRecordings
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return setNeverDeleteRecordings@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpFunc<Unit, bool> getAllowRecordVoice
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return getAllowRecordVoice@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpFunc<bool, Unit> setAllowRecordVoice
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return setAllowRecordVoice@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(LethalSettingsArgs))]
			public LethalSettingsArgs(string pluginName, string pluginId, string pluginVersion, FSharpFunc<Unit, float> getLocalPlayerVolume, FSharpFunc<float, Unit> setLocalPlayerVolume, FSharpFunc<Unit, bool> getNeverDeleteRecordings, FSharpFunc<bool, Unit> setNeverDeleteRecordings, FSharpFunc<Unit, bool> getAllowRecordVoice, FSharpFunc<bool, Unit> setAllowRecordVoice)
			{
				pluginName@ = pluginName;
				pluginId@ = pluginId;
				pluginVersion@ = pluginVersion;
				getLocalPlayerVolume@ = getLocalPlayerVolume;
				setLocalPlayerVolume@ = setLocalPlayerVolume;
				getNeverDeleteRecordings@ = getNeverDeleteRecordings;
				setNeverDeleteRecordings@ = setNeverDeleteRecordings;
				getAllowRecordVoice@ = getAllowRecordVoice;
				setAllowRecordVoice@ = setAllowRecordVoice;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<LethalSettingsArgs, string>>((PrintfFormat<FSharpFunc<LethalSettingsArgs, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<LethalSettingsArgs, string>, Unit, string, string, LethalSettingsArgs>("%+A")).Invoke(this);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal sealed class run@66-3
		{
			public LethalSettingsArgs settings;

			public run@66-3(LethalSettingsArgs settings)
			{
				this.settings = settings;
				base..ctor();
			}

			internal void Invoke(SliderComponent _arg1, float value)
			{
				settings.setLocalPlayerVolume@.Invoke(value);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal sealed class run@71-4
		{
			public LethalSettingsArgs settings;

			public run@71-4(LethalSettingsArgs settings)
			{
				this.settings = settings;
				base..ctor();
			}

			internal void Invoke(ToggleComponent _arg2, bool value)
			{
				settings.setNeverDeleteRecordings@.Invoke(value);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal sealed class run@76-5
		{
			public LethalSettingsArgs settings;

			public run@76-5(LethalSettingsArgs settings)
			{
				this.settings = settings;
				base..ctor();
			}

			internal void Invoke(ToggleComponent _arg3, bool value)
			{
				settings.setAllowRecordVoice@.Invoke(value);
			}
		}

		[Serializable]
		internal sealed class run@55-2 : FSharpFunc<Unit, Unit>
		{
			public LethalSettingsArgs settings;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal run@55-2(LethalSettingsArgs settings)
			{
				this.settings = settings;
			}

			public override Unit Invoke(Unit unitVar0)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0053: Expected O, but got Unknown
				//IL_00a8: 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_00b5: Expected O, but got Unknown
				//IL_00f4: 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_0101: Expected O, but got Unknown
				//IL_0140: Unknown result type (might be due to invalid IL or missing references)
				ModSettingsConfig val = new ModSettingsConfig();
				val.Name = settings.pluginName@;
				val.Id = settings.pluginId@;
				val.Version = settings.pluginVersion@;
				val.Description = "The preferences below only affect yourself. These values are not synced from the host.";
				MenuComponent[] array = new MenuComponent[3];
				SliderComponent val2 = new SliderComponent();
				val2.Value = settings.getLocalPlayerVolume@.Invoke((Unit)null);
				val2.MinValue = 0f;
				val2.MaxValue = 100f;
				val2.Text = "Volume when a monster is mimicking your own voice:";
				val2.OnValueChanged = new run@66-3(settings).Invoke;
				array[0] = (MenuComponent)val2;
				ToggleComponent val3 = new ToggleComponent();
				val3.Text = "Never delete recordings";
				val3.Value = settings.getNeverDeleteRecordings@.Invoke((Unit)null);
				val3.OnValueChanged = new run@71-4(settings).Invoke;
				array[1] = (MenuComponent)val3;
				ToggleComponent val4 = new ToggleComponent();
				val4.Text = "Allow record voice";
				val4.Value = settings.getAllowRecordVoice@.Invoke((Unit)null);
				val4.OnValueChanged = new run@76-5(settings).Invoke;
				array[2] = (MenuComponent)val4;
				val.MenuComponents = (MenuComponent[])(object)array;
				ModMenu.RegisterMod(val, true, true);
				return null;
			}
		}

		[CompilationArgumentCounts(new int[] { 1, 1 })]
		public static void initLethalConfig(Assembly assembly, ConfigFile configFile)
		{
			if (Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig"))
			{
				FSharpFunc<Unit, Unit> val = new run@22(assembly, configFile);
				val.Invoke((Unit)null);
			}
		}

		[CompilationArgumentCounts(new int[] { 1, 1 })]
		public static void initLobbyCompatibility(string pluginName, string pluginVersion)
		{
			if (Chainloader.PluginInfos.ContainsKey("BMX.LobbyCompatibility"))
			{
				FSharpFunc<Unit, Unit> val = new run@32-1(pluginName, pluginVersion);
				val.Invoke((Unit)null);
			}
		}

		public static void initLethalSettings(LethalSettingsArgs settings)
		{
			if (Chainloader.PluginInfos.ContainsKey("com.willis.lc.lethalsettings"))
			{
				FSharpFunc<Unit, Unit> val = new run@55-2(settings);
				val.Invoke((Unit)null);
			}
		}
	}
}
namespace <StartupCode$Mirage-Compatibility>.$Mirage
{
	internal static class Compatibility
	{
	}
}
namespace <StartupCode$Mirage-Compatibility>.$Compatibility
{
	internal static class AssemblyInfo
	{
	}
}
namespace <StartupCode$Mirage-Compatibility>.$.NETStandard,Version=v2.1
{
	internal static class AssemblyAttributes
	{
	}
}
namespace System.Diagnostics.CodeAnalysis
{
	[Serializable]
	[Flags]
	[CompilerGenerated]
	[DebuggerNonUserCode]
	internal enum DynamicallyAccessedMemberTypes
	{
		All = -1,
		None = 0,
		PublicParameterlessConstructor = 1,
		PublicConstructors = 3,
		NonPublicConstructors = 4,
		PublicMethods = 8,
		NonPublicMethods = 0x10,
		PublicFields = 0x20,
		NonPublicFields = 0x40,
		PublicNestedTypes = 0x80,
		NonPublicNestedTypes = 0x100,
		PublicProperties = 0x200,
		NonPublicProperties = 0x400,
		PublicEvents = 0x800,
		NonPublicEvents = 0x1000,
		Interfaces = 0x2000
	}
	[CompilerGenerated]
	internal class DynamicDependencyAttribute : Attribute
	{
		[CompilerGenerated]
		[DebuggerNonUserCode]
		private DynamicallyAccessedMemberTypes MemberType@;

		[CompilerGenerated]
		[DebuggerNonUserCode]
		private Type Type@;

		[CompilerGenerated]
		[DebuggerNonUserCode]
		public DynamicallyAccessedMemberTypes MemberType
		{
			[CompilerGenerated]
			[DebuggerNonUserCode]
			get
			{
				return MemberType@;
			}
		}

		[CompilerGenerated]
		[DebuggerNonUserCode]
		public Type Type
		{
			[CompilerGenerated]
			[DebuggerNonUserCode]
			get
			{
				return Type@;
			}
		}

		[CompilerGenerated]
		[DebuggerNonUserCode]
		public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes MemberType, Type Type)
		{
			MemberType@ = MemberType;
			Type@ = Type;
		}
	}
}

BepInEx/plugins/Mirage.Core.dll

Decompiled 7 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using System.Threading;
using System.Threading.Tasks;
using <StartupCode$Mirage-Core>.$Mirage.Core.Async;
using <StartupCode$Mirage-Core>.$Mirage.Core.Audio.Microphone;
using FSharpPlus;
using FSharpPlus.Control;
using FSharpPlus.Internals;
using FSharpx.Control;
using Microsoft.FSharp.Collections;
using Microsoft.FSharp.Control;
using Microsoft.FSharp.Core;
using Mirage.Core.Async;
using Mirage.Core.Audio.File;
using NAudio.Dsp;
using NAudio.Lame;
using NAudio.Wave;

[assembly: FSharpInterfaceDataVersion(2, 0, 0)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("NAudio.Core")]
[assembly: IgnoresAccessChecksTo("NAudio")]
[assembly: IgnoresAccessChecksTo("NAudio.Lame")]
[assembly: AssemblyCompany("Mirage.Core")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+97f34ecc8986c8c0a85155e2bf49f25f63e6afe6")]
[assembly: AssemblyProduct("Mirage.Core")]
[assembly: AssemblyTitle("Mirage.Core")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public static class AssemblyInfo
{
}
namespace <StartupCode$Mirage-Core>
{
	internal static class $AssemblyInfo
	{
	}
}
namespace Mirage.Core.Audio.Microphone
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class Recognition
	{
		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal sealed class BatchedState<PlayerId> : IEquatable<BatchedState<PlayerId>>, IStructuralEquatable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid fileId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal PlayerId playerId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal List<float> samples@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Detection.VADFrame vadFrame@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpList<Detection.VADFrame> vadTimings@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool finished@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			internal Guid fileId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return fileId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			internal PlayerId playerId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return playerId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			internal List<float> samples
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return samples@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			internal Detection.VADFrame vadFrame
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadFrame@;
				}
				[CompilerGenerated]
				[DebuggerNonUserCode]
				set
				{
					vadFrame@ = value;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			internal FSharpList<Detection.VADFrame> vadTimings
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadTimings@;
				}
				[CompilerGenerated]
				[DebuggerNonUserCode]
				set
				{
					vadTimings@ = value;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			internal bool finished
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return finished@;
				}
				[CompilerGenerated]
				[DebuggerNonUserCode]
				set
				{
					finished@ = value;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(BatchedState<>))]
			internal BatchedState(Guid fileId, PlayerId playerId, List<float> samples, Detection.VADFrame vadFrame, FSharpList<Detection.VADFrame> vadTimings, bool finished)
			{
				fileId@ = fileId;
				playerId@ = playerId;
				samples@ = samples;
				vadFrame@ = vadFrame;
				vadTimings@ = vadTimings;
				finished@ = finished;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<BatchedState<BatchedState<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<BatchedState<PlayerId>, string>>((PrintfFormat<FSharpFunc<BatchedState<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<BatchedState<FSharpFunc<BatchedState<PlayerId>, string>>, string>, Unit, string, string, BatchedState<FSharpFunc<BatchedState<PlayerId>, string>>>("%+A"))).Invoke((BatchedState<BatchedState<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					num = -1640531527 + ((finished@ ? 1 : 0) + ((num << 6) + (num >> 2)));
					num = -1640531527 + (vadTimings@.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					Detection.VADFrame vADFrame = vadFrame@;
					num = -1640531527 + (vADFrame.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<List<float>>(comp, samples@) + ((num << 6) + (num >> 2)));
					PlayerId val = playerId@;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<PlayerId>(comp, val) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, fileId@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is BatchedState<PlayerId> batchedState)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, fileId@, batchedState.fileId@))
						{
							PlayerId val = playerId@;
							PlayerId val2 = batchedState.playerId@;
							if (HashCompare.GenericEqualityWithComparerIntrinsic<PlayerId>(comp, val, val2))
							{
								if (HashCompare.GenericEqualityWithComparerIntrinsic<List<float>>(comp, samples@, batchedState.samples@))
								{
									Detection.VADFrame vADFrame = vadFrame@;
									Detection.VADFrame vADFrame2 = batchedState.vadFrame@;
									if (vADFrame.Equals(vADFrame2, comp))
									{
										FSharpList<Detection.VADFrame> val3 = vadTimings@;
										FSharpList<Detection.VADFrame> val4 = batchedState.vadTimings@;
										if (val3.Equals((object)val4, comp))
										{
											return finished@ == batchedState.finished@;
										}
										return false;
									}
									return false;
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(BatchedState<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						if (HashCompare.GenericEqualityERIntrinsic<Guid>(fileId@, obj.fileId@))
						{
							PlayerId val = playerId@;
							PlayerId val2 = obj.playerId@;
							if (HashCompare.GenericEqualityERIntrinsic<PlayerId>(val, val2))
							{
								if (HashCompare.GenericEqualityERIntrinsic<List<float>>(samples@, obj.samples@))
								{
									Detection.VADFrame vADFrame = vadFrame@;
									if (vADFrame.Equals(obj.vadFrame@))
									{
										if (HashCompare.GenericEqualityERIntrinsic<FSharpList<Detection.VADFrame>>(vadTimings@, obj.vadTimings@))
										{
											return finished@ == obj.finished@;
										}
										return false;
									}
									return false;
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is BatchedState<PlayerId> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class BatchedStart<PlayerId> : IEquatable<BatchedStart<PlayerId>>, IStructuralEquatable, IComparable<BatchedStart<PlayerId>>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid fileId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal PlayerId playerId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid sentenceId@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid fileId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return fileId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public PlayerId playerId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return playerId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid sentenceId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return sentenceId@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(BatchedStart<>))]
			public BatchedStart(Guid fileId, PlayerId playerId, Guid sentenceId)
			{
				fileId@ = fileId;
				playerId@ = playerId;
				sentenceId@ = sentenceId;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<BatchedStart<BatchedStart<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<BatchedStart<PlayerId>, string>>((PrintfFormat<FSharpFunc<BatchedStart<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<BatchedStart<FSharpFunc<BatchedStart<PlayerId>, string>>, string>, Unit, string, string, BatchedStart<FSharpFunc<BatchedStart<PlayerId>, string>>>("%+A"))).Invoke((BatchedStart<BatchedStart<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(BatchedStart<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, fileId@, obj.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						PlayerId val = playerId@;
						PlayerId val2 = obj.playerId@;
						int num2 = HashCompare.GenericComparisonWithComparerIntrinsic<PlayerId>(genericComparer, val, val2);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						return HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, sentenceId@, obj.sentenceId@);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((BatchedStart<PlayerId>)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				BatchedStart<PlayerId> batchedStart = (BatchedStart<PlayerId>)obj;
				if (this != null)
				{
					if ((BatchedStart<PlayerId>)obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, fileId@, batchedStart.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						PlayerId val = playerId@;
						PlayerId val2 = batchedStart.playerId@;
						int num2 = HashCompare.GenericComparisonWithComparerIntrinsic<PlayerId>(comp, val, val2);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						return HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, sentenceId@, batchedStart.sentenceId@);
					}
					return 1;
				}
				if ((BatchedStart<PlayerId>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, sentenceId@) + ((num << 6) + (num >> 2)));
					PlayerId val = playerId@;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<PlayerId>(comp, val) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, fileId@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is BatchedStart<PlayerId> batchedStart)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, fileId@, batchedStart.fileId@))
						{
							PlayerId val = playerId@;
							PlayerId val2 = batchedStart.playerId@;
							if (HashCompare.GenericEqualityWithComparerIntrinsic<PlayerId>(comp, val, val2))
							{
								return HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, sentenceId@, batchedStart.sentenceId@);
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(BatchedStart<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						if (HashCompare.GenericEqualityERIntrinsic<Guid>(fileId@, obj.fileId@))
						{
							PlayerId val = playerId@;
							PlayerId val2 = obj.playerId@;
							if (HashCompare.GenericEqualityERIntrinsic<PlayerId>(val, val2))
							{
								return HashCompare.GenericEqualityERIntrinsic<Guid>(sentenceId@, obj.sentenceId@);
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is BatchedStart<PlayerId> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class BatchedFound<PlayerId> : IEquatable<BatchedFound<PlayerId>>, IStructuralEquatable, IComparable<BatchedFound<PlayerId>>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal PlayerId playerId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid sentenceId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal float[] samples@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Detection.VADFrame vadFrame@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public PlayerId playerId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return playerId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid sentenceId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return sentenceId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public float[] samples
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return samples@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Detection.VADFrame vadFrame
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadFrame@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(BatchedFound<>))]
			public BatchedFound(PlayerId playerId, Guid sentenceId, float[] samples, Detection.VADFrame vadFrame)
			{
				playerId@ = playerId;
				sentenceId@ = sentenceId;
				samples@ = samples;
				vadFrame@ = vadFrame;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<BatchedFound<BatchedFound<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<BatchedFound<PlayerId>, string>>((PrintfFormat<FSharpFunc<BatchedFound<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<BatchedFound<FSharpFunc<BatchedFound<PlayerId>, string>>, string>, Unit, string, string, BatchedFound<FSharpFunc<BatchedFound<PlayerId>, string>>>("%+A"))).Invoke((BatchedFound<BatchedFound<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(BatchedFound<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						PlayerId val = playerId@;
						PlayerId val2 = obj.playerId@;
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<PlayerId>(genericComparer, val, val2);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						int num2 = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, sentenceId@, obj.sentenceId@);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						int num3 = HashCompare.GenericComparisonWithComparerIntrinsic<float[]>(LanguagePrimitives.GenericComparer, samples@, obj.samples@);
						if (num3 < 0)
						{
							return num3;
						}
						if (num3 > 0)
						{
							return num3;
						}
						genericComparer = LanguagePrimitives.GenericComparer;
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = obj.vadFrame@;
						return vADFrame.CompareTo(vADFrame2, genericComparer);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((BatchedFound<PlayerId>)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				BatchedFound<PlayerId> batchedFound = (BatchedFound<PlayerId>)obj;
				if (this != null)
				{
					if ((BatchedFound<PlayerId>)obj != null)
					{
						PlayerId val = playerId@;
						PlayerId val2 = batchedFound.playerId@;
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<PlayerId>(comp, val, val2);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						int num2 = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, sentenceId@, batchedFound.sentenceId@);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						int num3 = HashCompare.GenericComparisonWithComparerIntrinsic<float[]>(comp, samples@, batchedFound.samples@);
						if (num3 < 0)
						{
							return num3;
						}
						if (num3 > 0)
						{
							return num3;
						}
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = batchedFound.vadFrame@;
						return vADFrame.CompareTo(vADFrame2, comp);
					}
					return 1;
				}
				if ((BatchedFound<PlayerId>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					Detection.VADFrame vADFrame = vadFrame@;
					num = -1640531527 + (vADFrame.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<float[]>(comp, samples@) + ((num << 6) + (num >> 2)));
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, sentenceId@) + ((num << 6) + (num >> 2)));
					PlayerId val = playerId@;
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<PlayerId>(comp, val) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is BatchedFound<PlayerId> batchedFound)
					{
						PlayerId val = playerId@;
						PlayerId val2 = batchedFound.playerId@;
						if (HashCompare.GenericEqualityWithComparerIntrinsic<PlayerId>(comp, val, val2))
						{
							if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, sentenceId@, batchedFound.sentenceId@))
							{
								if (HashCompare.GenericEqualityWithComparerIntrinsic<float[]>(comp, samples@, batchedFound.samples@))
								{
									Detection.VADFrame vADFrame = vadFrame@;
									Detection.VADFrame vADFrame2 = batchedFound.vadFrame@;
									return vADFrame.Equals(vADFrame2, comp);
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(BatchedFound<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						PlayerId val = playerId@;
						PlayerId val2 = obj.playerId@;
						if (HashCompare.GenericEqualityERIntrinsic<PlayerId>(val, val2))
						{
							if (HashCompare.GenericEqualityERIntrinsic<Guid>(sentenceId@, obj.sentenceId@))
							{
								if (HashCompare.GenericEqualityERIntrinsic<float[]>(samples@, obj.samples@))
								{
									Detection.VADFrame vADFrame = vadFrame@;
									return vADFrame.Equals(obj.vadFrame@);
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is BatchedFound<PlayerId> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class BatchedEnd : IEquatable<BatchedEnd>, IStructuralEquatable, IComparable<BatchedEnd>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid sentenceId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpList<Detection.VADFrame> vadTimings@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid sentenceId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return sentenceId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpList<Detection.VADFrame> vadTimings
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadTimings@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(BatchedEnd))]
			public BatchedEnd(Guid sentenceId, FSharpList<Detection.VADFrame> vadTimings)
			{
				sentenceId@ = sentenceId;
				vadTimings@ = vadTimings;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<BatchedEnd, string>>((PrintfFormat<FSharpFunc<BatchedEnd, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<BatchedEnd, string>, Unit, string, string, BatchedEnd>("%+A")).Invoke(this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(BatchedEnd obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, sentenceId@, obj.sentenceId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						FSharpList<Detection.VADFrame> val = vadTimings@;
						FSharpList<Detection.VADFrame> val2 = obj.vadTimings@;
						return val.CompareTo((object)val2, genericComparer);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((BatchedEnd)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				BatchedEnd batchedEnd = (BatchedEnd)obj;
				if (this != null)
				{
					if ((BatchedEnd)obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, sentenceId@, batchedEnd.sentenceId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						FSharpList<Detection.VADFrame> val = vadTimings@;
						FSharpList<Detection.VADFrame> val2 = batchedEnd.vadTimings@;
						return val.CompareTo((object)val2, comp);
					}
					return 1;
				}
				if ((BatchedEnd)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					num = -1640531527 + (vadTimings@.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, sentenceId@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is BatchedEnd batchedEnd)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, sentenceId@, batchedEnd.sentenceId@))
						{
							FSharpList<Detection.VADFrame> val = vadTimings@;
							FSharpList<Detection.VADFrame> val2 = batchedEnd.vadTimings@;
							return val.Equals((object)val2, comp);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(BatchedEnd obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						if (HashCompare.GenericEqualityERIntrinsic<Guid>(sentenceId@, obj.sentenceId@))
						{
							return HashCompare.GenericEqualityERIntrinsic<FSharpList<Detection.VADFrame>>(vadTimings@, obj.vadTimings@);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is BatchedEnd obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[DebuggerDisplay("{__DebugDisplay(),nq}")]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public abstract class TranscribeBatched<PlayerId> : IEquatable<TranscribeBatched<PlayerId>>, IStructuralEquatable, IComparable<TranscribeBatched<PlayerId>>, IComparable, IStructuralComparable
		{
			public static class Tags
			{
				public const int BatchedStart = 0;

				public const int BatchedFound = 1;

				public const int BatchedEnd = 2;
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscribeBatched<>.BatchedStart@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class BatchedStart : TranscribeBatched<PlayerId>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly BatchedStart<PlayerId> item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedStart<PlayerId> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal BatchedStart(BatchedStart<PlayerId> item)
				{
					this.item = item;
				}
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscribeBatched<>.BatchedFound@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class BatchedFound : TranscribeBatched<PlayerId>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly BatchedFound<PlayerId> item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedFound<PlayerId> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal BatchedFound(BatchedFound<PlayerId> item)
				{
					this.item = item;
				}
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscribeBatched<>.BatchedEnd@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class BatchedEnd : TranscribeBatched<PlayerId>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly Recognition.BatchedEnd item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public Recognition.BatchedEnd Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal BatchedEnd(Recognition.BatchedEnd item)
				{
					this.item = item;
				}
			}

			[SpecialName]
			internal class BatchedStart@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedStart<PlayerId> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedStart@DebugTypeProxy(BatchedStart obj)
				{
					_obj = obj;
				}
			}

			[SpecialName]
			internal class BatchedFound@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedFound<PlayerId> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedFound@DebugTypeProxy(BatchedFound obj)
				{
					_obj = obj;
				}
			}

			[SpecialName]
			internal class BatchedEnd@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public Recognition.BatchedEnd Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public BatchedEnd@DebugTypeProxy(BatchedEnd obj)
				{
					_obj = obj;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public int Tag
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return (this is BatchedEnd) ? 2 : ((this is BatchedFound) ? 1 : 0);
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsBatchedStart
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return this is BatchedStart;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsBatchedFound
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return this is BatchedFound;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsBatchedEnd
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return this is BatchedEnd;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatched<>))]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal TranscribeBatched()
			{
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscribeBatched<PlayerId> NewBatchedStart(BatchedStart<PlayerId> item)
			{
				return new BatchedStart(item);
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscribeBatched<PlayerId> NewBatchedFound(BatchedFound<PlayerId> item)
			{
				return new BatchedFound(item);
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscribeBatched<PlayerId> NewBatchedEnd(Recognition.BatchedEnd item)
			{
				return new BatchedEnd(item);
			}

			[SpecialName]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal object __DebugDisplay()
			{
				return ((FSharpFunc<TranscribeBatched<TranscribeBatched<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeBatched<PlayerId>, string>>((PrintfFormat<FSharpFunc<TranscribeBatched<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeBatched<FSharpFunc<TranscribeBatched<PlayerId>, string>>, string>, Unit, string, string, string>("%+0.8A"))).Invoke((TranscribeBatched<TranscribeBatched<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<TranscribeBatched<TranscribeBatched<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeBatched<PlayerId>, string>>((PrintfFormat<FSharpFunc<TranscribeBatched<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeBatched<FSharpFunc<TranscribeBatched<PlayerId>, string>>, string>, Unit, string, string, TranscribeBatched<FSharpFunc<TranscribeBatched<PlayerId>, string>>>("%+A"))).Invoke((TranscribeBatched<TranscribeBatched<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public virtual sealed int CompareTo(TranscribeBatched<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = ((this is BatchedEnd) ? 2 : ((this is BatchedFound) ? 1 : 0));
						int num2 = ((obj is BatchedEnd) ? 2 : ((obj is BatchedFound) ? 1 : 0));
						if (num == num2)
						{
							IComparer genericComparer;
							if (!(this is BatchedStart))
							{
								if (this is BatchedFound)
								{
									BatchedFound batchedFound = (BatchedFound)this;
									BatchedFound batchedFound2 = (BatchedFound)obj;
									genericComparer = LanguagePrimitives.GenericComparer;
									BatchedFound<PlayerId> item = batchedFound.item;
									BatchedFound<PlayerId> item2 = batchedFound2.item;
									return item.CompareTo(item2, genericComparer);
								}
								if (this is BatchedEnd)
								{
									BatchedEnd batchedEnd = (BatchedEnd)this;
									BatchedEnd batchedEnd2 = (BatchedEnd)obj;
									genericComparer = LanguagePrimitives.GenericComparer;
									Recognition.BatchedEnd item3 = batchedEnd.item;
									Recognition.BatchedEnd item4 = batchedEnd2.item;
									return item3.CompareTo(item4, genericComparer);
								}
							}
							BatchedStart batchedStart = (BatchedStart)this;
							BatchedStart batchedStart2 = (BatchedStart)obj;
							genericComparer = LanguagePrimitives.GenericComparer;
							BatchedStart<PlayerId> item5 = batchedStart.item;
							BatchedStart<PlayerId> item6 = batchedStart2.item;
							return item5.CompareTo(item6, genericComparer);
						}
						return num - num2;
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public virtual sealed int CompareTo(object obj)
			{
				return CompareTo((TranscribeBatched<PlayerId>)obj);
			}

			[CompilerGenerated]
			public virtual sealed int CompareTo(object obj, IComparer comp)
			{
				TranscribeBatched<PlayerId> transcribeBatched = (TranscribeBatched<PlayerId>)obj;
				if (this != null)
				{
					if ((TranscribeBatched<PlayerId>)obj != null)
					{
						int num = ((this is BatchedEnd) ? 2 : ((this is BatchedFound) ? 1 : 0));
						TranscribeBatched<PlayerId> transcribeBatched2 = transcribeBatched;
						int num2 = ((transcribeBatched2 is BatchedEnd) ? 2 : ((transcribeBatched2 is BatchedFound) ? 1 : 0));
						if (num == num2)
						{
							if (!(this is BatchedStart))
							{
								if (this is BatchedFound)
								{
									BatchedFound batchedFound = (BatchedFound)this;
									BatchedFound batchedFound2 = (BatchedFound)transcribeBatched;
									BatchedFound<PlayerId> item = batchedFound.item;
									BatchedFound<PlayerId> item2 = batchedFound2.item;
									return item.CompareTo(item2, comp);
								}
								if (this is BatchedEnd)
								{
									BatchedEnd batchedEnd = (BatchedEnd)this;
									BatchedEnd batchedEnd2 = (BatchedEnd)transcribeBatched;
									Recognition.BatchedEnd item3 = batchedEnd.item;
									Recognition.BatchedEnd item4 = batchedEnd2.item;
									return item3.CompareTo(item4, comp);
								}
							}
							BatchedStart batchedStart = (BatchedStart)this;
							BatchedStart batchedStart2 = (BatchedStart)transcribeBatched;
							BatchedStart<PlayerId> item5 = batchedStart.item;
							BatchedStart<PlayerId> item6 = batchedStart2.item;
							return item5.CompareTo(item6, comp);
						}
						return num - num2;
					}
					return 1;
				}
				if ((TranscribeBatched<PlayerId>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public virtual sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					if (!(this is BatchedStart))
					{
						if (this is BatchedFound)
						{
							BatchedFound batchedFound = (BatchedFound)this;
							num = 1;
							return -1640531527 + (batchedFound.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
						}
						if (this is BatchedEnd)
						{
							BatchedEnd batchedEnd = (BatchedEnd)this;
							num = 2;
							return -1640531527 + (batchedEnd.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
						}
					}
					BatchedStart batchedStart = (BatchedStart)this;
					num = 0;
					return -1640531527 + (batchedStart.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public virtual sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscribeBatched<PlayerId> transcribeBatched)
					{
						int num = ((this is BatchedEnd) ? 2 : ((this is BatchedFound) ? 1 : 0));
						TranscribeBatched<PlayerId> transcribeBatched2 = transcribeBatched;
						int num2 = ((transcribeBatched2 is BatchedEnd) ? 2 : ((transcribeBatched2 is BatchedFound) ? 1 : 0));
						if (num == num2)
						{
							if (!(this is BatchedStart))
							{
								if (this is BatchedFound)
								{
									BatchedFound batchedFound = (BatchedFound)this;
									BatchedFound batchedFound2 = (BatchedFound)transcribeBatched;
									BatchedFound<PlayerId> item = batchedFound.item;
									BatchedFound<PlayerId> item2 = batchedFound2.item;
									return item.Equals(item2, comp);
								}
								if (this is BatchedEnd)
								{
									BatchedEnd batchedEnd = (BatchedEnd)this;
									BatchedEnd batchedEnd2 = (BatchedEnd)transcribeBatched;
									Recognition.BatchedEnd item3 = batchedEnd.item;
									Recognition.BatchedEnd item4 = batchedEnd2.item;
									return item3.Equals(item4, comp);
								}
							}
							BatchedStart batchedStart = (BatchedStart)this;
							BatchedStart batchedStart2 = (BatchedStart)transcribeBatched;
							BatchedStart<PlayerId> item5 = batchedStart.item;
							BatchedStart<PlayerId> item6 = batchedStart2.item;
							return item5.Equals(item6, comp);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public virtual sealed bool Equals(TranscribeBatched<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = ((this is BatchedEnd) ? 2 : ((this is BatchedFound) ? 1 : 0));
						int num2 = ((obj is BatchedEnd) ? 2 : ((obj is BatchedFound) ? 1 : 0));
						if (num == num2)
						{
							if (!(this is BatchedStart))
							{
								if (this is BatchedFound)
								{
									BatchedFound batchedFound = (BatchedFound)this;
									BatchedFound batchedFound2 = (BatchedFound)obj;
									return batchedFound.item.Equals(batchedFound2.item);
								}
								if (this is BatchedEnd)
								{
									BatchedEnd batchedEnd = (BatchedEnd)this;
									BatchedEnd batchedEnd2 = (BatchedEnd)obj;
									return batchedEnd.item.Equals(batchedEnd2.item);
								}
							}
							BatchedStart batchedStart = (BatchedStart)this;
							BatchedStart batchedStart2 = (BatchedStart)obj;
							return batchedStart.item.Equals(batchedStart2.item);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is TranscribeBatched<PlayerId> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[DebuggerDisplay("{__DebugDisplay(),nq}")]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public class TranscriberInput<PlayerId> : IEquatable<TranscriberInput<PlayerId>>, IStructuralEquatable
		{
			public static class Tags
			{
				public const int TranscribeLocal = 0;

				public const int TranscribeBatched = 1;

				public const int TryTranscribeAudio = 2;

				public const int SetLanguage = 3;
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscriberInput<>.TranscribeLocal@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class TranscribeLocal : TranscriberInput<PlayerId>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly Recorder.RecordAction item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public Recorder.RecordAction Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal TranscribeLocal(Recorder.RecordAction item)
					: base(0)
				{
					this.item = item;
				}
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscriberInput<>.TranscribeBatched@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class TranscribeBatched : TranscriberInput<PlayerId>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly TranscribeBatched<PlayerId> item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeBatched<PlayerId> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal TranscribeBatched(TranscribeBatched<PlayerId> item)
					: base(1)
				{
					this.item = item;
				}
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscriberInput<>.SetLanguage@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class SetLanguage : TranscriberInput<PlayerId>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly string item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public string Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal SetLanguage(string item)
					: base(3)
				{
					this.item = item;
				}
			}

			[SpecialName]
			internal class TranscribeLocal@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public Recorder.RecordAction Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeLocal@DebugTypeProxy(TranscribeLocal obj)
				{
					_obj = obj;
				}
			}

			[SpecialName]
			internal class TranscribeBatched@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeBatched<PlayerId> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeBatched@DebugTypeProxy(TranscribeBatched obj)
				{
					_obj = obj;
				}
			}

			[SpecialName]
			internal class SetLanguage@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public string Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public SetLanguage@DebugTypeProxy(SetLanguage obj)
				{
					_obj = obj;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public int Tag
			{
				[DebuggerNonUserCode]
				get;
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsTranscribeLocal
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return Tag == 0;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsTranscribeBatched
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return Tag == 1;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public static TranscriberInput<PlayerId> TryTranscribeAudio
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				get
				{
					return _unique_TryTranscribeAudio;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsTryTranscribeAudio
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return Tag == 2;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsSetLanguage
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return Tag == 3;
				}
			}

			static TranscriberInput()
			{
				_unique_TryTranscribeAudio = new TranscriberInput<PlayerId>(2);
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscriberInput<>))]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal TranscriberInput(int _tag)
			{
				this._tag = _tag;
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscriberInput<PlayerId> NewTranscribeLocal(Recorder.RecordAction item)
			{
				return new TranscribeLocal(item);
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscriberInput<PlayerId> NewTranscribeBatched(TranscribeBatched<PlayerId> item)
			{
				return new TranscribeBatched(item);
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscriberInput<PlayerId> NewSetLanguage(string item)
			{
				return new SetLanguage(item);
			}

			[SpecialName]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal object __DebugDisplay()
			{
				return ((FSharpFunc<TranscriberInput<TranscriberInput<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscriberInput<PlayerId>, string>>((PrintfFormat<FSharpFunc<TranscriberInput<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscriberInput<FSharpFunc<TranscriberInput<PlayerId>, string>>, string>, Unit, string, string, string>("%+0.8A"))).Invoke((TranscriberInput<TranscriberInput<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<TranscriberInput<TranscriberInput<PlayerId>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscriberInput<PlayerId>, string>>((PrintfFormat<FSharpFunc<TranscriberInput<PlayerId>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscriberInput<FSharpFunc<TranscriberInput<PlayerId>, string>>, string>, Unit, string, string, TranscriberInput<FSharpFunc<TranscriberInput<PlayerId>, string>>>("%+A"))).Invoke((TranscriberInput<TranscriberInput<PlayerId>>)(object)this);
			}

			[CompilerGenerated]
			public virtual sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					switch (Tag)
					{
					case 0:
					{
						TranscribeLocal transcribeLocal = (TranscribeLocal)this;
						num = 0;
						return -1640531527 + (transcribeLocal.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					}
					case 1:
					{
						TranscribeBatched transcribeBatched = (TranscribeBatched)this;
						num = 1;
						return -1640531527 + (transcribeBatched.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					}
					case 3:
					{
						SetLanguage setLanguage = (SetLanguage)this;
						num = 3;
						return -1640531527 + ((setLanguage.item?.GetHashCode() ?? 0) + ((num << 6) + (num >> 2)));
					}
					default:
						return _tag;
					}
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public virtual sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscriberInput<PlayerId> transcriberInput)
					{
						int tag = _tag;
						int tag2 = transcriberInput._tag;
						if (tag == tag2)
						{
							switch (Tag)
							{
							case 0:
							{
								TranscribeLocal transcribeLocal = (TranscribeLocal)this;
								TranscribeLocal transcribeLocal2 = (TranscribeLocal)transcriberInput;
								Recorder.RecordAction item3 = transcribeLocal.item;
								Recorder.RecordAction item4 = transcribeLocal2.item;
								return item3.Equals(item4, comp);
							}
							case 1:
							{
								TranscribeBatched transcribeBatched = (TranscribeBatched)this;
								TranscribeBatched transcribeBatched2 = (TranscribeBatched)transcriberInput;
								TranscribeBatched<PlayerId> item = transcribeBatched.item;
								TranscribeBatched<PlayerId> item2 = transcribeBatched2.item;
								return item.Equals(item2, comp);
							}
							case 3:
							{
								SetLanguage setLanguage = (SetLanguage)this;
								SetLanguage setLanguage2 = (SetLanguage)transcriberInput;
								return string.Equals(setLanguage.item, setLanguage2.item);
							}
							default:
								return true;
							}
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public virtual sealed bool Equals(TranscriberInput<PlayerId> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int tag = _tag;
						int tag2 = obj._tag;
						if (tag == tag2)
						{
							switch (Tag)
							{
							case 0:
							{
								TranscribeLocal transcribeLocal = (TranscribeLocal)this;
								TranscribeLocal transcribeLocal2 = (TranscribeLocal)obj;
								return transcribeLocal.item.Equals(transcribeLocal2.item);
							}
							case 1:
							{
								TranscribeBatched transcribeBatched = (TranscribeBatched)this;
								TranscribeBatched transcribeBatched2 = (TranscribeBatched)obj;
								return transcribeBatched.item.Equals(transcribeBatched2.item);
							}
							case 3:
							{
								SetLanguage setLanguage = (SetLanguage)this;
								SetLanguage setLanguage2 = (SetLanguage)obj;
								return string.Equals(setLanguage.item, setLanguage2.item);
							}
							default:
								return true;
							}
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is TranscriberInput<PlayerId> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class TranscribeRequest : IEquatable<TranscribeRequest>, IStructuralEquatable, IComparable<TranscribeRequest>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal float[][] samplesBatch@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal string language@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public float[][] samplesBatch
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return samplesBatch@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public string language
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return language@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeRequest))]
			public TranscribeRequest(float[][] samplesBatch, string language)
			{
				samplesBatch@ = samplesBatch;
				language@ = language;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeRequest, string>>((PrintfFormat<FSharpFunc<TranscribeRequest, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeRequest, string>, Unit, string, string, TranscribeRequest>("%+A")).Invoke(this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(TranscribeRequest obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<float[][]>(LanguagePrimitives.GenericComparer, samplesBatch@, obj.samplesBatch@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						return string.CompareOrdinal(language@, obj.language@);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((TranscribeRequest)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				TranscribeRequest transcribeRequest = (TranscribeRequest)obj;
				if (this != null)
				{
					if ((TranscribeRequest)obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<float[][]>(comp, samplesBatch@, transcribeRequest.samplesBatch@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						return string.CompareOrdinal(language@, transcribeRequest.language@);
					}
					return 1;
				}
				if ((TranscribeRequest)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					num = -1640531527 + ((language@?.GetHashCode() ?? 0) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<float[][]>(comp, samplesBatch@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscribeRequest transcribeRequest)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<float[][]>(comp, samplesBatch@, transcribeRequest.samplesBatch@))
						{
							return string.Equals(language@, transcribeRequest.language@);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(TranscribeRequest obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						if (HashCompare.GenericEqualityERIntrinsic<float[][]>(samplesBatch@, obj.samplesBatch@))
						{
							return string.Equals(language@, obj.language@);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is TranscribeRequest obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class TranscribeFound<Transcription> : IEquatable<TranscribeFound<Transcription>>, IStructuralEquatable, IComparable<TranscribeFound<Transcription>>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid fileId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Detection.VADFrame vadFrame@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Transcription transcription@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid fileId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return fileId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Detection.VADFrame vadFrame
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadFrame@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Transcription transcription
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return transcription@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeFound<>))]
			public TranscribeFound(Guid fileId, Detection.VADFrame vadFrame, Transcription transcription)
			{
				fileId@ = fileId;
				vadFrame@ = vadFrame;
				transcription@ = transcription;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<TranscribeFound<TranscribeFound<Transcription>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeFound<Transcription>, string>>((PrintfFormat<FSharpFunc<TranscribeFound<Transcription>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeFound<FSharpFunc<TranscribeFound<Transcription>, string>>, string>, Unit, string, string, TranscribeFound<FSharpFunc<TranscribeFound<Transcription>, string>>>("%+A"))).Invoke((TranscribeFound<TranscribeFound<Transcription>>)(object)this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(TranscribeFound<Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, fileId@, obj.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = obj.vadFrame@;
						int num2 = vADFrame.CompareTo(vADFrame2, genericComparer);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						genericComparer = LanguagePrimitives.GenericComparer;
						Transcription val = transcription@;
						Transcription val2 = obj.transcription@;
						return HashCompare.GenericComparisonWithComparerIntrinsic<Transcription>(genericComparer, val, val2);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((TranscribeFound<Transcription>)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				TranscribeFound<Transcription> transcribeFound = (TranscribeFound<Transcription>)obj;
				if (this != null)
				{
					if ((TranscribeFound<Transcription>)obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, fileId@, transcribeFound.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = transcribeFound.vadFrame@;
						int num2 = vADFrame.CompareTo(vADFrame2, comp);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						Transcription val = transcription@;
						Transcription val2 = transcribeFound.transcription@;
						return HashCompare.GenericComparisonWithComparerIntrinsic<Transcription>(comp, val, val2);
					}
					return 1;
				}
				if ((TranscribeFound<Transcription>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					Transcription val = transcription@;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Transcription>(comp, val) + ((num << 6) + (num >> 2)));
					Detection.VADFrame vADFrame = vadFrame@;
					num = -1640531527 + (vADFrame.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, fileId@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscribeFound<Transcription> transcribeFound)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, fileId@, transcribeFound.fileId@))
						{
							Detection.VADFrame vADFrame = vadFrame@;
							Detection.VADFrame vADFrame2 = transcribeFound.vadFrame@;
							if (vADFrame.Equals(vADFrame2, comp))
							{
								Transcription val = transcription@;
								Transcription val2 = transcribeFound.transcription@;
								return HashCompare.GenericEqualityWithComparerIntrinsic<Transcription>(comp, val, val2);
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(TranscribeFound<Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						if (HashCompare.GenericEqualityERIntrinsic<Guid>(fileId@, obj.fileId@))
						{
							Detection.VADFrame vADFrame = vadFrame@;
							if (vADFrame.Equals(obj.vadFrame@))
							{
								Transcription val = transcription@;
								Transcription val2 = obj.transcription@;
								return HashCompare.GenericEqualityERIntrinsic<Transcription>(val, val2);
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is TranscribeFound<Transcription> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class TranscribeEnd<Transcription> : IEquatable<TranscribeEnd<Transcription>>, IStructuralEquatable, IComparable<TranscribeEnd<Transcription>>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid fileId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Detection.VADFrame vadFrame@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpList<Detection.VADFrame> vadTimings@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Transcription transcription@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid fileId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return fileId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Detection.VADFrame vadFrame
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadFrame@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public FSharpList<Detection.VADFrame> vadTimings
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadTimings@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Transcription transcription
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return transcription@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeEnd<>))]
			public TranscribeEnd(Guid fileId, Detection.VADFrame vadFrame, FSharpList<Detection.VADFrame> vadTimings, Transcription transcription)
			{
				fileId@ = fileId;
				vadFrame@ = vadFrame;
				vadTimings@ = vadTimings;
				transcription@ = transcription;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<TranscribeEnd<TranscribeEnd<Transcription>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeEnd<Transcription>, string>>((PrintfFormat<FSharpFunc<TranscribeEnd<Transcription>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeEnd<FSharpFunc<TranscribeEnd<Transcription>, string>>, string>, Unit, string, string, TranscribeEnd<FSharpFunc<TranscribeEnd<Transcription>, string>>>("%+A"))).Invoke((TranscribeEnd<TranscribeEnd<Transcription>>)(object)this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(TranscribeEnd<Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, fileId@, obj.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = obj.vadFrame@;
						int num2 = vADFrame.CompareTo(vADFrame2, genericComparer);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						genericComparer = LanguagePrimitives.GenericComparer;
						FSharpList<Detection.VADFrame> val = vadTimings@;
						FSharpList<Detection.VADFrame> val2 = obj.vadTimings@;
						int num3 = val.CompareTo((object)val2, genericComparer);
						if (num3 < 0)
						{
							return num3;
						}
						if (num3 > 0)
						{
							return num3;
						}
						genericComparer = LanguagePrimitives.GenericComparer;
						Transcription val3 = transcription@;
						Transcription val4 = obj.transcription@;
						return HashCompare.GenericComparisonWithComparerIntrinsic<Transcription>(genericComparer, val3, val4);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((TranscribeEnd<Transcription>)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				TranscribeEnd<Transcription> transcribeEnd = (TranscribeEnd<Transcription>)obj;
				if (this != null)
				{
					if ((TranscribeEnd<Transcription>)obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, fileId@, transcribeEnd.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = transcribeEnd.vadFrame@;
						int num2 = vADFrame.CompareTo(vADFrame2, comp);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						FSharpList<Detection.VADFrame> val = vadTimings@;
						FSharpList<Detection.VADFrame> val2 = transcribeEnd.vadTimings@;
						int num3 = val.CompareTo((object)val2, comp);
						if (num3 < 0)
						{
							return num3;
						}
						if (num3 > 0)
						{
							return num3;
						}
						Transcription val3 = transcription@;
						Transcription val4 = transcribeEnd.transcription@;
						return HashCompare.GenericComparisonWithComparerIntrinsic<Transcription>(comp, val3, val4);
					}
					return 1;
				}
				if ((TranscribeEnd<Transcription>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					Transcription val = transcription@;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Transcription>(comp, val) + ((num << 6) + (num >> 2)));
					num = -1640531527 + (vadTimings@.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					Detection.VADFrame vADFrame = vadFrame@;
					num = -1640531527 + (vADFrame.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, fileId@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscribeEnd<Transcription> transcribeEnd)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, fileId@, transcribeEnd.fileId@))
						{
							Detection.VADFrame vADFrame = vadFrame@;
							Detection.VADFrame vADFrame2 = transcribeEnd.vadFrame@;
							if (vADFrame.Equals(vADFrame2, comp))
							{
								FSharpList<Detection.VADFrame> val = vadTimings@;
								FSharpList<Detection.VADFrame> val2 = transcribeEnd.vadTimings@;
								if (val.Equals((object)val2, comp))
								{
									Transcription val3 = transcription@;
									Transcription val4 = transcribeEnd.transcription@;
									return HashCompare.GenericEqualityWithComparerIntrinsic<Transcription>(comp, val3, val4);
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed bool Equals(TranscribeEnd<Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						if (HashCompare.GenericEqualityERIntrinsic<Guid>(fileId@, obj.fileId@))
						{
							Detection.VADFrame vADFrame = vadFrame@;
							if (vADFrame.Equals(obj.vadFrame@))
							{
								if (HashCompare.GenericEqualityERIntrinsic<FSharpList<Detection.VADFrame>>(vadTimings@, obj.vadTimings@))
								{
									Transcription val = transcription@;
									Transcription val2 = obj.transcription@;
									return HashCompare.GenericEqualityERIntrinsic<Transcription>(val, val2);
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is TranscribeEnd<Transcription> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[DebuggerDisplay("{__DebugDisplay(),nq}")]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public abstract class TranscribeLocalAction<Transcription> : IEquatable<TranscribeLocalAction<Transcription>>, IStructuralEquatable, IComparable<TranscribeLocalAction<Transcription>>, IComparable, IStructuralComparable
		{
			public static class Tags
			{
				public const int TranscribeStart = 0;

				public const int TranscribeFound = 1;

				public const int TranscribeEnd = 2;
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscribeLocalAction<>._TranscribeStart@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			internal class _TranscribeStart : TranscribeLocalAction<Transcription>
			{
				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal _TranscribeStart()
				{
				}
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscribeLocalAction<>.TranscribeFound@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class TranscribeFound : TranscribeLocalAction<Transcription>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly TranscribeFound<Transcription> item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeFound<Transcription> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal TranscribeFound(TranscribeFound<Transcription> item)
				{
					this.item = item;
				}
			}

			[Serializable]
			[SpecialName]
			[DebuggerTypeProxy(typeof(TranscribeLocalAction<>.TranscribeEnd@DebugTypeProxy))]
			[DebuggerDisplay("{__DebugDisplay(),nq}")]
			public class TranscribeEnd : TranscribeLocalAction<Transcription>
			{
				[DebuggerBrowsable(DebuggerBrowsableState.Never)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal readonly TranscribeEnd<Transcription> item;

				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeEnd<Transcription> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				internal TranscribeEnd(TranscribeEnd<Transcription> item)
				{
					this.item = item;
				}
			}

			[SpecialName]
			internal class _TranscribeStart@DebugTypeProxy
			{
				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public _TranscribeStart@DebugTypeProxy(_TranscribeStart obj)
				{
					_obj = obj;
				}
			}

			[SpecialName]
			internal class TranscribeFound@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeFound<Transcription> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeFound@DebugTypeProxy(TranscribeFound obj)
				{
					_obj = obj;
				}
			}

			[SpecialName]
			internal class TranscribeEnd@DebugTypeProxy
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeEnd<Transcription> Item
				{
					[CompilerGenerated]
					[DebuggerNonUserCode]
					get
					{
						return _obj.item;
					}
				}

				[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
				[CompilerGenerated]
				[DebuggerNonUserCode]
				public TranscribeEnd@DebugTypeProxy(TranscribeEnd obj)
				{
					_obj = obj;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public int Tag
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return (this is TranscribeEnd) ? 2 : ((this is TranscribeFound) ? 1 : 0);
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public static TranscribeLocalAction<Transcription> TranscribeStart
			{
				[CompilationMapping(/*Could not decode attribute arguments.*/)]
				get
				{
					return _unique_TranscribeStart;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsTranscribeStart
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return this is _TranscribeStart;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsTranscribeFound
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return this is TranscribeFound;
				}
			}

			[CompilerGenerated]
			[DebuggerNonUserCode]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			public bool IsTranscribeEnd
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return this is TranscribeEnd;
				}
			}

			static TranscribeLocalAction()
			{
				_unique_TranscribeStart = new _TranscribeStart();
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeLocalAction<>))]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal TranscribeLocalAction()
			{
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscribeLocalAction<Transcription> NewTranscribeFound(TranscribeFound<Transcription> item)
			{
				return new TranscribeFound(item);
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public static TranscribeLocalAction<Transcription> NewTranscribeEnd(TranscribeEnd<Transcription> item)
			{
				return new TranscribeEnd(item);
			}

			[SpecialName]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal object __DebugDisplay()
			{
				return ((FSharpFunc<TranscribeLocalAction<TranscribeLocalAction<Transcription>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeLocalAction<Transcription>, string>>((PrintfFormat<FSharpFunc<TranscribeLocalAction<Transcription>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeLocalAction<FSharpFunc<TranscribeLocalAction<Transcription>, string>>, string>, Unit, string, string, string>("%+0.8A"))).Invoke((TranscribeLocalAction<TranscribeLocalAction<Transcription>>)(object)this);
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<TranscribeLocalAction<TranscribeLocalAction<Transcription>>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeLocalAction<Transcription>, string>>((PrintfFormat<FSharpFunc<TranscribeLocalAction<Transcription>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeLocalAction<FSharpFunc<TranscribeLocalAction<Transcription>, string>>, string>, Unit, string, string, TranscribeLocalAction<FSharpFunc<TranscribeLocalAction<Transcription>, string>>>("%+A"))).Invoke((TranscribeLocalAction<TranscribeLocalAction<Transcription>>)(object)this);
			}

			[CompilerGenerated]
			public virtual sealed int CompareTo(TranscribeLocalAction<Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = ((this is TranscribeEnd) ? 2 : ((this is TranscribeFound) ? 1 : 0));
						int num2 = ((obj is TranscribeEnd) ? 2 : ((obj is TranscribeFound) ? 1 : 0));
						if (num == num2)
						{
							IComparer genericComparer;
							if (!(this is TranscribeFound))
							{
								if (this is TranscribeEnd)
								{
									TranscribeEnd transcribeEnd = (TranscribeEnd)this;
									TranscribeEnd transcribeEnd2 = (TranscribeEnd)obj;
									genericComparer = LanguagePrimitives.GenericComparer;
									TranscribeEnd<Transcription> item = transcribeEnd.item;
									TranscribeEnd<Transcription> item2 = transcribeEnd2.item;
									return item.CompareTo(item2, genericComparer);
								}
								return 0;
							}
							TranscribeFound transcribeFound = (TranscribeFound)this;
							TranscribeFound transcribeFound2 = (TranscribeFound)obj;
							genericComparer = LanguagePrimitives.GenericComparer;
							TranscribeFound<Transcription> item3 = transcribeFound.item;
							TranscribeFound<Transcription> item4 = transcribeFound2.item;
							return item3.CompareTo(item4, genericComparer);
						}
						return num - num2;
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public virtual sealed int CompareTo(object obj)
			{
				return CompareTo((TranscribeLocalAction<Transcription>)obj);
			}

			[CompilerGenerated]
			public virtual sealed int CompareTo(object obj, IComparer comp)
			{
				TranscribeLocalAction<Transcription> transcribeLocalAction = (TranscribeLocalAction<Transcription>)obj;
				if (this != null)
				{
					if ((TranscribeLocalAction<Transcription>)obj != null)
					{
						int num = ((this is TranscribeEnd) ? 2 : ((this is TranscribeFound) ? 1 : 0));
						TranscribeLocalAction<Transcription> transcribeLocalAction2 = transcribeLocalAction;
						int num2 = ((transcribeLocalAction2 is TranscribeEnd) ? 2 : ((transcribeLocalAction2 is TranscribeFound) ? 1 : 0));
						if (num == num2)
						{
							if (!(this is TranscribeFound))
							{
								if (this is TranscribeEnd)
								{
									TranscribeEnd transcribeEnd = (TranscribeEnd)this;
									TranscribeEnd transcribeEnd2 = (TranscribeEnd)transcribeLocalAction;
									TranscribeEnd<Transcription> item = transcribeEnd.item;
									TranscribeEnd<Transcription> item2 = transcribeEnd2.item;
									return item.CompareTo(item2, comp);
								}
								return 0;
							}
							TranscribeFound transcribeFound = (TranscribeFound)this;
							TranscribeFound transcribeFound2 = (TranscribeFound)transcribeLocalAction;
							TranscribeFound<Transcription> item3 = transcribeFound.item;
							TranscribeFound<Transcription> item4 = transcribeFound2.item;
							return item3.CompareTo(item4, comp);
						}
						return num - num2;
					}
					return 1;
				}
				if ((TranscribeLocalAction<Transcription>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public virtual sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					if (!(this is TranscribeFound))
					{
						if (this is TranscribeEnd)
						{
							TranscribeEnd transcribeEnd = (TranscribeEnd)this;
							num = 2;
							return -1640531527 + (transcribeEnd.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
						}
						return (this is TranscribeEnd) ? 2 : ((this is TranscribeFound) ? 1 : 0);
					}
					TranscribeFound transcribeFound = (TranscribeFound)this;
					num = 1;
					return -1640531527 + (transcribeFound.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public virtual sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscribeLocalAction<Transcription> transcribeLocalAction)
					{
						int num = ((this is TranscribeEnd) ? 2 : ((this is TranscribeFound) ? 1 : 0));
						TranscribeLocalAction<Transcription> transcribeLocalAction2 = transcribeLocalAction;
						int num2 = ((transcribeLocalAction2 is TranscribeEnd) ? 2 : ((transcribeLocalAction2 is TranscribeFound) ? 1 : 0));
						if (num == num2)
						{
							if (!(this is TranscribeFound))
							{
								if (this is TranscribeEnd)
								{
									TranscribeEnd transcribeEnd = (TranscribeEnd)this;
									TranscribeEnd transcribeEnd2 = (TranscribeEnd)transcribeLocalAction;
									TranscribeEnd<Transcription> item = transcribeEnd.item;
									TranscribeEnd<Transcription> item2 = transcribeEnd2.item;
									return item.Equals(item2, comp);
								}
								return true;
							}
							TranscribeFound transcribeFound = (TranscribeFound)this;
							TranscribeFound transcribeFound2 = (TranscribeFound)transcribeLocalAction;
							TranscribeFound<Transcription> item3 = transcribeFound.item;
							TranscribeFound<Transcription> item4 = transcribeFound2.item;
							return item3.Equals(item4, comp);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public virtual sealed bool Equals(TranscribeLocalAction<Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = ((this is TranscribeEnd) ? 2 : ((this is TranscribeFound) ? 1 : 0));
						int num2 = ((obj is TranscribeEnd) ? 2 : ((obj is TranscribeFound) ? 1 : 0));
						if (num == num2)
						{
							if (!(this is TranscribeFound))
							{
								if (this is TranscribeEnd)
								{
									TranscribeEnd transcribeEnd = (TranscribeEnd)this;
									TranscribeEnd transcribeEnd2 = (TranscribeEnd)obj;
									return transcribeEnd.item.Equals(transcribeEnd2.item);
								}
								return true;
							}
							TranscribeFound transcribeFound = (TranscribeFound)this;
							TranscribeFound transcribeFound2 = (TranscribeFound)obj;
							return transcribeFound.item.Equals(transcribeFound2.item);
						}
						return false;
					}
					return false;
				}
				return obj == null;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is TranscribeLocalAction<Transcription> obj2)
				{
					return Equals(obj2);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public sealed class TranscribeBatchedFound<PlayerId, Transcription> : IEquatable<TranscribeBatchedFound<PlayerId, Transcription>>, IStructuralEquatable, IComparable<TranscribeBatchedFound<PlayerId, Transcription>>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid fileId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal PlayerId playerId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Guid sentenceId@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Detection.VADFrame vadFrame@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal Transcription transcription@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid fileId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return fileId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public PlayerId playerId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return playerId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Guid sentenceId
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return sentenceId@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Detection.VADFrame vadFrame
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return vadFrame@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public Transcription transcription
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return transcription@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(TranscribeBatchedFound<, >))]
			public TranscribeBatchedFound(Guid fileId, PlayerId playerId, Guid sentenceId, Detection.VADFrame vadFrame, Transcription transcription)
			{
				fileId@ = fileId;
				playerId@ = playerId;
				sentenceId@ = sentenceId;
				vadFrame@ = vadFrame;
				transcription@ = transcription;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ((FSharpFunc<TranscribeBatchedFound<TranscribeBatchedFound<PlayerId, Transcription>, string>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<TranscribeBatchedFound<PlayerId, Transcription>, string>>((PrintfFormat<FSharpFunc<TranscribeBatchedFound<PlayerId, Transcription>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<TranscribeBatchedFound<FSharpFunc<TranscribeBatchedFound<PlayerId, Transcription>, string>, Unit>, string>, Unit, string, string, TranscribeBatchedFound<FSharpFunc<TranscribeBatchedFound<PlayerId, Transcription>, string>, Unit>>("%+A"))).Invoke((TranscribeBatchedFound<TranscribeBatchedFound<PlayerId, Transcription>, string>)(object)this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(TranscribeBatchedFound<PlayerId, Transcription> obj)
			{
				if (this != null)
				{
					if (obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, fileId@, obj.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						IComparer genericComparer = LanguagePrimitives.GenericComparer;
						PlayerId val = playerId@;
						PlayerId val2 = obj.playerId@;
						int num2 = HashCompare.GenericComparisonWithComparerIntrinsic<PlayerId>(genericComparer, val, val2);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						int num3 = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(LanguagePrimitives.GenericComparer, sentenceId@, obj.sentenceId@);
						if (num3 < 0)
						{
							return num3;
						}
						if (num3 > 0)
						{
							return num3;
						}
						genericComparer = LanguagePrimitives.GenericComparer;
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = obj.vadFrame@;
						int num4 = vADFrame.CompareTo(vADFrame2, genericComparer);
						if (num4 < 0)
						{
							return num4;
						}
						if (num4 > 0)
						{
							return num4;
						}
						genericComparer = LanguagePrimitives.GenericComparer;
						Transcription val3 = transcription@;
						Transcription val4 = obj.transcription@;
						return HashCompare.GenericComparisonWithComparerIntrinsic<Transcription>(genericComparer, val3, val4);
					}
					return 1;
				}
				if (obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((TranscribeBatchedFound<PlayerId, Transcription>)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				TranscribeBatchedFound<PlayerId, Transcription> transcribeBatchedFound = (TranscribeBatchedFound<PlayerId, Transcription>)obj;
				if (this != null)
				{
					if ((TranscribeBatchedFound<PlayerId, Transcription>)obj != null)
					{
						int num = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, fileId@, transcribeBatchedFound.fileId@);
						if (num < 0)
						{
							return num;
						}
						if (num > 0)
						{
							return num;
						}
						PlayerId val = playerId@;
						PlayerId val2 = transcribeBatchedFound.playerId@;
						int num2 = HashCompare.GenericComparisonWithComparerIntrinsic<PlayerId>(comp, val, val2);
						if (num2 < 0)
						{
							return num2;
						}
						if (num2 > 0)
						{
							return num2;
						}
						int num3 = HashCompare.GenericComparisonWithComparerIntrinsic<Guid>(comp, sentenceId@, transcribeBatchedFound.sentenceId@);
						if (num3 < 0)
						{
							return num3;
						}
						if (num3 > 0)
						{
							return num3;
						}
						Detection.VADFrame vADFrame = vadFrame@;
						Detection.VADFrame vADFrame2 = transcribeBatchedFound.vadFrame@;
						int num4 = vADFrame.CompareTo(vADFrame2, comp);
						if (num4 < 0)
						{
							return num4;
						}
						if (num4 > 0)
						{
							return num4;
						}
						Transcription val3 = transcription@;
						Transcription val4 = transcribeBatchedFound.transcription@;
						return HashCompare.GenericComparisonWithComparerIntrinsic<Transcription>(comp, val3, val4);
					}
					return 1;
				}
				if ((TranscribeBatchedFound<PlayerId, Transcription>)obj != null)
				{
					return -1;
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				if (this != null)
				{
					int num = 0;
					Transcription val = transcription@;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Transcription>(comp, val) + ((num << 6) + (num >> 2)));
					Detection.VADFrame vADFrame = vadFrame@;
					num = -1640531527 + (vADFrame.GetHashCode(comp) + ((num << 6) + (num >> 2)));
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, sentenceId@) + ((num << 6) + (num >> 2)));
					PlayerId val2 = playerId@;
					num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<PlayerId>(comp, val2) + ((num << 6) + (num >> 2)));
					return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<Guid>(comp, fileId@) + ((num << 6) + (num >> 2)));
				}
				return 0;
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (this != null)
				{
					if (obj is TranscribeBatchedFound<PlayerId, Transcription> transcribeBatchedFound)
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, fileId@, transcribeBatchedFound.fileId@))
						{
							PlayerId val = playerId@;
							PlayerId val2 = transcribeBatchedFound.playerId@;
							if (HashCompare.GenericEqualityWithComparerIntrinsic<PlayerId>(comp, val, val2))
							{
								if (HashCompare.GenericEqualityWithComparerIntrinsic<Guid>(comp, sentenceId@, transcribeBatchedFound.sentenceId@))
								{
									Detection.VADFrame vADFrame = vadFrame@;
									Detection.VADFrame vADFrame2 = transcribeBatchedFound.vadFrame@;
									if (vADFrame.Equals(vADFrame2, comp))
									{
										Transcription val3 = transcription@;
										Transcription val4 = transcribeBatchedFound.transcription@;
										return HashCompare.GenericEqualityWithComparerIntrinsic<Transcription>(comp, val3, val4);
									}
									return false;
								}
								return fals

BepInEx/plugins/Mirage.dll

Decompiled 7 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.ExceptionServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security.Permissions;
using System.Threading;
using System.Threading.Tasks;
using <StartupCode$Mirage>;
using <StartupCode$Mirage>.$Mirage.Domain;
using <StartupCode$Mirage>.$Mirage.Domain.Audio;
using <StartupCode$Mirage>.$Mirage.Hook;
using <StartupCode$Mirage>.$Mirage.Unity;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Dissonance;
using Dissonance.Audio.Capture;
using Dissonance.Audio.Playback;
using FSharpPlus;
using FSharpPlus.Control;
using FSharpPlus.Data;
using FSharpPlus.Internals;
using FSharpx.Control;
using GameNetcodeStuff;
using Microsoft.FSharp.Collections;
using Microsoft.FSharp.Control;
using Microsoft.FSharp.Core;
using Mirage.Core.Async;
using Mirage.Core.Audio.File;
using Mirage.Core.Audio.Microphone;
using Mirage.Domain;
using Mirage.Domain.Audio;
using Mirage.Hook;
using Mirage.NetcodePatcher;
using Mirage.Unity;
using NAudio.Lame;
using NAudio.Wave;
using Newtonsoft.Json;
using On;
using On.Dissonance;
using On.GameNetcodeStuff;
using On.Unity.Netcode;
using Silero;
using Unity.Collections;
using Unity.Netcode;
using UnityEngine;

[assembly: FSharpInterfaceDataVersion(2, 0, 0)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("LethalConfig")]
[assembly: IgnoresAccessChecksTo("LethalSettings")]
[assembly: IgnoresAccessChecksTo("NAudio.Core")]
[assembly: IgnoresAccessChecksTo("NAudio")]
[assembly: IgnoresAccessChecksTo("NAudio.Lame")]
[assembly: IgnoresAccessChecksTo("NAudio.WinMM")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("Mirage")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+97f34ecc8986c8c0a85155e2bf49f25f63e6afe6")]
[assembly: AssemblyProduct("Mirage")]
[assembly: AssemblyTitle("Mirage")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
	}
}
namespace Mirage
{
	[Serializable]
	[BepInPlugin("qwbarch.Mirage", "Mirage", "1.12.2")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public void Awake()
		{
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
			bool flag = LameDLL.LoadNativeDLL(new string[1] { directoryName });
			DirectoryInfo directoryInfo = System.IO.Directory.CreateDirectory(Mirage.Domain.Directory.mirageDirectory);
			if (!flag)
			{
				Mirage.Domain.Logger.logError.Invoke("Failed to load NAudio.Lame. This means no monsters will be able to play your voice.\n" + "Please report this to qwbarch at https://github.com/qwbarch/mirage/issues\n" + PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, string>("Path failed: %P()", new object[1] { directoryName }, (Type[])null)));
			}
			Array values = Enum.GetValues(typeof(LogCategory));
			IEnumerable<LogCategory> enumerable = SeqModule.Cast<LogCategory>((IEnumerable)values);
			foreach (LogCategory item in enumerable)
			{
				Logs.SetLogLevel(item, (LogLevel)4);
			}
			Compatibility.initLethalConfig(executingAssembly, Mirage.Domain.Config.localConfig.General@);
			Compatibility.initLobbyCompatibility("Mirage", "1.12.2");
			Mirage.Domain.Setting.initSettings(Path.Join((ReadOnlySpan<char>)Mirage.Domain.Directory.mirageDirectory, (ReadOnlySpan<char>)"settings.json"));
			Mirage.Domain.Netcode.initNetcodePatcher();
			FSharpAsync.StartImmediate(Mirage.Domain.Audio.Recording.deleteRecordings, (FSharpOption<CancellationToken>)null);
			Application.quitting += $Plugin.Awake@53.Invoke;
			Mirage.Hook.Dissonance.cacheDissonance();
			Mirage.Hook.AudioSpatializer.disableAudioSpatializer();
			Mirage.Hook.Prefab.registerPrefab();
			Mirage.Hook.Config.syncConfig();
			Mirage.Hook.Microphone.readMicrophone(Mirage.Domain.Directory.recordingDirectory);
			Mirage.Hook.MaskedPlayerEnemy.hookMaskedEnemy();
		}
	}
}
namespace <StartupCode$Mirage>
{
	internal static class $Plugin
	{
		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class Awake@53
		{
			internal static void Invoke()
			{
				FSharpAsync.StartImmediate(Mirage.Domain.Audio.Recording.deleteRecordings, (FSharpOption<CancellationToken>)null);
			}
		}
	}
}
[CompilationMapping(/*Could not decode attribute arguments.*/)]
public static class AssemblyInfo
{
}
namespace <StartupCode$Mirage>
{
	internal static class $AssemblyInfo
	{
	}
}
namespace Mirage.Hook
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class Microphone
	{
		[Serializable]
		[Struct]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public struct RecordState : IEquatable<RecordState>, IStructuralEquatable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal float[] samples@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal WaveFormat format@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool isReady@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool isPlayerDead@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool pushToTalkEnabled@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool isMuted@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool allowRecordVoice@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly float[] samples
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return samples@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly WaveFormat format
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return format@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly bool isReady
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return isReady@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly bool isPlayerDead
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return isPlayerDead@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly bool pushToTalkEnabled
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return pushToTalkEnabled@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly bool isMuted
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return isMuted@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly bool allowRecordVoice
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return allowRecordVoice@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(RecordState))]
			public RecordState(float[] samples, WaveFormat format, bool isReady, bool isPlayerDead, bool pushToTalkEnabled, bool isMuted, bool allowRecordVoice)
			{
				samples@ = samples;
				format@ = format;
				isReady@ = isReady;
				isPlayerDead@ = isPlayerDead;
				pushToTalkEnabled@ = pushToTalkEnabled;
				isMuted@ = isMuted;
				allowRecordVoice@ = allowRecordVoice;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<RecordState, string>>((PrintfFormat<FSharpFunc<RecordState, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<RecordState, string>, Unit, string, string, RecordState>("%+A")).Invoke(this);
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				int num = 0;
				num = -1640531527 + ((allowRecordVoice@ ? 1 : 0) + ((num << 6) + (num >> 2)));
				num = -1640531527 + ((isMuted@ ? 1 : 0) + ((num << 6) + (num >> 2)));
				num = -1640531527 + ((pushToTalkEnabled@ ? 1 : 0) + ((num << 6) + (num >> 2)));
				num = -1640531527 + ((isPlayerDead@ ? 1 : 0) + ((num << 6) + (num >> 2)));
				num = -1640531527 + ((isReady@ ? 1 : 0) + ((num << 6) + (num >> 2)));
				num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<WaveFormat>(comp, format@) + ((num << 6) + (num >> 2)));
				return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<float[]>(comp, samples@) + ((num << 6) + (num >> 2)));
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (obj is RecordState recordState)
				{
					if (HashCompare.GenericEqualityWithComparerIntrinsic<float[]>(comp, samples@, recordState.samples@))
					{
						if (HashCompare.GenericEqualityWithComparerIntrinsic<WaveFormat>(comp, format@, recordState.format@))
						{
							if (isReady@ == recordState.isReady@)
							{
								if (isPlayerDead@ == recordState.isPlayerDead@)
								{
									if (pushToTalkEnabled@ == recordState.pushToTalkEnabled@)
									{
										if (isMuted@ == recordState.isMuted@)
										{
											return allowRecordVoice@ == recordState.allowRecordVoice@;
										}
										return false;
									}
									return false;
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return false;
			}

			[CompilerGenerated]
			public sealed bool Equals(RecordState obj)
			{
				if (HashCompare.GenericEqualityERIntrinsic<float[]>(samples@, obj.samples@))
				{
					if (HashCompare.GenericEqualityERIntrinsic<WaveFormat>(format@, obj.format@))
					{
						if (isReady@ == obj.isReady@)
						{
							if (isPlayerDead@ == obj.isPlayerDead@)
							{
								if (pushToTalkEnabled@ == obj.pushToTalkEnabled@)
								{
									if (isMuted@ == obj.isMuted@)
									{
										return allowRecordVoice@ == obj.allowRecordVoice@;
									}
									return false;
								}
								return false;
							}
							return false;
						}
						return false;
					}
					return false;
				}
				return false;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is RecordState)
				{
					return Equals((RecordState)obj);
				}
				return false;
			}
		}

		[Serializable]
		[Struct]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public struct ProcessingState : IEquatable<ProcessingState>, IStructuralEquatable, IComparable<ProcessingState>, IComparable, IStructuralComparable
		{
			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal FSharpOption<float> forcedProbability@;

			[CompilerGenerated]
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			internal bool allowRecordVoice@;

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly FSharpOption<float> forcedProbability
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return forcedProbability@;
				}
			}

			[CompilationMapping(/*Could not decode attribute arguments.*/)]
			public readonly bool allowRecordVoice
			{
				[CompilerGenerated]
				[DebuggerNonUserCode]
				get
				{
					return allowRecordVoice@;
				}
			}

			[DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(ProcessingState))]
			public ProcessingState(FSharpOption<float> forcedProbability, bool allowRecordVoice)
			{
				forcedProbability@ = forcedProbability;
				allowRecordVoice@ = allowRecordVoice;
			}

			[CompilerGenerated]
			public override string ToString()
			{
				return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<ProcessingState, string>>((PrintfFormat<FSharpFunc<ProcessingState, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<ProcessingState, string>, Unit, string, string, ProcessingState>("%+A")).Invoke(this);
			}

			[CompilerGenerated]
			public sealed int CompareTo(ProcessingState obj)
			{
				int num = HashCompare.GenericComparisonWithComparerIntrinsic<FSharpOption<float>>(LanguagePrimitives.GenericComparer, forcedProbability@, obj.forcedProbability@);
				if (num < 0)
				{
					return num;
				}
				if (num > 0)
				{
					return num;
				}
				IComparer genericComparer = LanguagePrimitives.GenericComparer;
				bool flag = allowRecordVoice@;
				bool flag2 = obj.allowRecordVoice@;
				return (flag ? 1 : 0) - (flag2 ? 1 : 0);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj)
			{
				return CompareTo((ProcessingState)obj);
			}

			[CompilerGenerated]
			public sealed int CompareTo(object obj, IComparer comp)
			{
				ProcessingState processingState = (ProcessingState)obj;
				int num = HashCompare.GenericComparisonWithComparerIntrinsic<FSharpOption<float>>(comp, forcedProbability@, processingState.forcedProbability@);
				if (num < 0)
				{
					return num;
				}
				if (num > 0)
				{
					return num;
				}
				bool flag = allowRecordVoice@;
				bool flag2 = processingState.allowRecordVoice@;
				return (flag ? 1 : 0) - (flag2 ? 1 : 0);
			}

			[CompilerGenerated]
			public sealed int GetHashCode(IEqualityComparer comp)
			{
				int num = 0;
				num = -1640531527 + ((allowRecordVoice@ ? 1 : 0) + ((num << 6) + (num >> 2)));
				return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<FSharpOption<float>>(comp, forcedProbability@) + ((num << 6) + (num >> 2)));
			}

			[CompilerGenerated]
			public sealed override int GetHashCode()
			{
				return GetHashCode(LanguagePrimitives.GenericEqualityComparer);
			}

			[CompilerGenerated]
			public sealed bool Equals(object obj, IEqualityComparer comp)
			{
				if (obj is ProcessingState processingState)
				{
					if (HashCompare.GenericEqualityWithComparerIntrinsic<FSharpOption<float>>(comp, forcedProbability@, processingState.forcedProbability@))
					{
						return allowRecordVoice@ == processingState.allowRecordVoice@;
					}
					return false;
				}
				return false;
			}

			[CompilerGenerated]
			public sealed bool Equals(ProcessingState obj)
			{
				if (HashCompare.GenericEqualityERIntrinsic<FSharpOption<float>>(forcedProbability@, obj.forcedProbability@))
				{
					return allowRecordVoice@ == obj.allowRecordVoice@;
				}
				return false;
			}

			[CompilerGenerated]
			public sealed override bool Equals(object obj)
			{
				if (obj is ProcessingState)
				{
					return Equals((ProcessingState)obj);
				}
				return false;
			}
		}

		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public class MicrophoneSubscriber : IMicrophoneSubscriber
		{
			virtual void IMicrophoneSubscriber.ReceiveMicrophoneData(ArraySegment<float> buffer, WaveFormat format)
			{
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Expected O, but got Unknown
				if (StartOfRound.Instance != null)
				{
					RecordState recordState = new RecordState(buffer.ToArray(), new WaveFormat(format.SampleRate, format.Channels), isReady, StartOfRound.Instance.localPlayerController.isPlayerDead, IngamePlayerSettings.Instance.settings.pushToTalk, Dissonance.dissonance.IsMuted, Mirage.Domain.Setting.settings.allowRecordVoice@);
					FSharpAsync<Unit> val = channel.AsyncAdd(recordState, (FSharpOption<int>)null);
					FSharpAsync.StartImmediate(val, (FSharpOption<CancellationToken>)null);
				}
			}

			virtual void IMicrophoneSubscriber.Reset()
			{
			}
		}

		[Serializable]
		internal sealed class recorder@59 : FSharpFunc<ProcessingState, bool>
		{
			internal static readonly recorder@59 @_instance = new recorder@59();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal recorder@59()
			{
			}

			public override bool Invoke(ProcessingState _arg1)
			{
				return _arg1.allowRecordVoice@;
			}
		}

		[Serializable]
		internal sealed class recorder@59-1 : FSharpFunc<FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>>, Recorder<ProcessingState>>
		{
			public string recordingDirectory;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public int minAudioDurationMs;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<ProcessingState, bool> allowRecordVoice;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal recorder@59-1(string recordingDirectory, int minAudioDurationMs, FSharpFunc<ProcessingState, bool> allowRecordVoice)
			{
				this.recordingDirectory = recordingDirectory;
				this.minAudioDurationMs = minAudioDurationMs;
				this.allowRecordVoice = allowRecordVoice;
			}

			public override Recorder<ProcessingState> Invoke(FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>> onRecordingWithState)
			{
				return Recorder.Recorder<ProcessingState>(minAudioDurationMs, recordingDirectory, allowRecordVoice, onRecordingWithState);
			}
		}

		[Serializable]
		internal sealed class recorder@59-2 : FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<RecordAction, FSharpAsync<Unit>> k;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal recorder@59-2(FSharpFunc<RecordAction, FSharpAsync<Unit>> k)
			{
				this.k = k;
			}

			public override FSharpFunc<RecordAction, FSharpAsync<Unit>> Invoke(ProcessingState _arg1)
			{
				return k;
			}
		}

		[Serializable]
		internal sealed class recorder@59-3 : FSharpFunc<FSharpFunc<RecordAction, FSharpAsync<Unit>>, Recorder<ProcessingState>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>>, Recorder<ProcessingState>> func2;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal recorder@59-3(FSharpFunc<FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>>, Recorder<ProcessingState>> func2)
			{
				this.func2 = func2;
			}

			public override Recorder<ProcessingState> Invoke(FSharpFunc<RecordAction, FSharpAsync<Unit>> x)
			{
				return func2.Invoke(func1@1(x));
			}
		}

		[Serializable]
		internal sealed class recorder@59-4 : FSharpFunc<RecordAction, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> k;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal recorder@59-4(FSharpAsync<Unit> k)
			{
				this.k = k;
			}

			public override FSharpAsync<Unit> Invoke(RecordAction _arg1)
			{
				return k;
			}
		}

		[Serializable]
		internal sealed class recorder@59-5 : FSharpFunc<Tuple<Return, FSharpAsync<Unit>>, FSharpFunc<Unit, FSharpAsync<Unit>>>
		{
			internal static readonly recorder@59-5 @_instance = new recorder@59-5();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal recorder@59-5()
			{
			}

			public override FSharpFunc<Unit, FSharpAsync<Unit>> Invoke(Tuple<Return, FSharpAsync<Unit>> tupledArg)
			{
				return Return.Return<Unit>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class voiceDetector@60 : FSharpFunc<ProcessingState, FSharpOption<float>>
		{
			internal static readonly voiceDetector@60 @_instance = new voiceDetector@60();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal voiceDetector@60()
			{
			}

			public override FSharpOption<float> Invoke(ProcessingState _arg2)
			{
				return _arg2.forcedProbability@;
			}
		}

		[Serializable]
		internal sealed class voiceDetector@60-1 : FSharpFunc<Tuple<Return, FSharpAsync<float>>, FSharpFunc<float, FSharpAsync<float>>>
		{
			internal static readonly voiceDetector@60-1 @_instance = new voiceDetector@60-1();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal voiceDetector@60-1()
			{
			}

			public override FSharpFunc<float, FSharpAsync<float>> Invoke(Tuple<Return, FSharpAsync<float>> tupledArg)
			{
				return Return.Return<float>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class voiceDetector@60-2 : FSharpFunc<float[], FSharpAsync<float>>
		{
			public SileroVAD silero;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal voiceDetector@60-2(SileroVAD silero)
			{
				this.silero = silero;
			}

			public override FSharpAsync<float> Invoke(float[] x)
			{
				return func2@1-1(API.detectSpeech(silero, x));
			}
		}

		[Serializable]
		internal sealed class voiceDetector@60-3 : FSharpFunc<ProcessingState, DetectAction, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Tuple<ProcessingState, DetectAction>, FSharpAsync<Unit>> f;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal voiceDetector@60-3(FSharpFunc<Tuple<ProcessingState, DetectAction>, FSharpAsync<Unit>> f)
			{
				this.f = f;
			}

			public override FSharpAsync<Unit> Invoke(ProcessingState x, DetectAction y)
			{
				return f.Invoke(new Tuple<ProcessingState, DetectAction>(x, y));
			}
		}

		[Serializable]
		internal sealed class readMicrophone@78-5 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			internal static readonly readMicrophone@78-5 @_instance = new readMicrophone@78-5();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@78-5()
			{
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncActivation<Unit>.Success(ctxt, (Unit)null);
			}
		}

		[Serializable]
		internal sealed class readMicrophone@78-4 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			internal static readonly readMicrophone@78-4 @_instance = new readMicrophone@78-4();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@78-4()
			{
			}

			public override FSharpAsync<Unit> Invoke(Unit _arg4)
			{
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)readMicrophone@78-5.@_instance);
			}
		}

		[Serializable]
		internal sealed class readMicrophone@78-6 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> computation;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Unit, FSharpAsync<Unit>> binder;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@78-6(FSharpAsync<Unit> computation, FSharpFunc<Unit, FSharpAsync<Unit>> binder)
			{
				this.computation = computation;
				this.binder = binder;
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncPrimitives.Bind<Unit, Unit>(ctxt, computation, binder);
			}
		}

		[Serializable]
		internal sealed class readMicrophone@78-3 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> consumer;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@78-3(Lazy<FSharpAsync<Unit>> consumer)
			{
				this.consumer = consumer;
			}

			public override FSharpAsync<Unit> Invoke(Unit unitVar)
			{
				FSharpAsync<Unit> value = consumer.Value;
				FSharpFunc<Unit, FSharpAsync<Unit>> @_instance;
				@_instance = readMicrophone@78-4.@_instance;
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new readMicrophone@78-6(value, @_instance));
			}
		}

		[Serializable]
		internal sealed class readMicrophone@65-7 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> computation2;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@65-7(FSharpAsync<Unit> computation2)
			{
				this.computation2 = computation2;
			}

			public override FSharpAsync<Unit> Invoke(Unit unitVar0)
			{
				return computation2;
			}
		}

		[Serializable]
		internal sealed class readMicrophone@65-8 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> computation1;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Unit, FSharpAsync<Unit>> part2;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@65-8(FSharpAsync<Unit> computation1, FSharpFunc<Unit, FSharpAsync<Unit>> part2)
			{
				this.computation1 = computation1;
				this.part2 = part2;
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncPrimitives.Bind<Unit, Unit>(ctxt, computation1, part2);
			}
		}

		[Serializable]
		internal sealed class readMicrophone@65-2 : FSharpFunc<RecordState, FSharpAsync<Unit>>
		{
			public Resampler<ProcessingState> resampler;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> consumer;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@65-2(Resampler<ProcessingState> resampler, Lazy<FSharpAsync<Unit>> consumer)
			{
				this.resampler = resampler;
				this.consumer = consumer;
			}

			public override FSharpAsync<Unit> Invoke(RecordState state)
			{
				//IL_003c: 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_008f: Unknown result type (might be due to invalid IL or missing references)
				FSharpAsync<Unit> obj;
				FSharpAsync<Unit> val;
				if (state.isReady@ && (Mirage.Domain.Config.getConfig().enableRecordVoiceWhileDead@ || !state.isPlayerDead@))
				{
					AudioFrame item = new AudioFrame(state.samples@, state.format@);
					ProcessingState item2 = new ProcessingState(state.isMuted@ ? FSharpOption<float>.Some(0f) : ((!state.pushToTalkEnabled@) ? null : FSharpOption<float>.Some(1f)), Mirage.Domain.Setting.settings.allowRecordVoice@);
					val = Resampler.writeResampler<ProcessingState>(resampler).Invoke((item2, item));
					FSharpAsync.StartImmediate(val, (FSharpOption<CancellationToken>)null);
					obj = ExtraTopLevelOperators.DefaultAsyncBuilder.Zero();
				}
				else
				{
					obj = ExtraTopLevelOperators.DefaultAsyncBuilder.Zero();
				}
				FSharpAsync<Unit> computation = obj;
				val = ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>((FSharpFunc<Unit, FSharpAsync<Unit>>)new readMicrophone@78-3(consumer));
				FSharpFunc<Unit, FSharpAsync<Unit>> part = new readMicrophone@65-7(val);
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new readMicrophone@65-8(computation, part));
			}
		}

		[Serializable]
		internal sealed class readMicrophone@64-9 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<RecordState> computation;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<RecordState, FSharpAsync<Unit>> binder;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@64-9(FSharpAsync<RecordState> computation, FSharpFunc<RecordState, FSharpAsync<Unit>> binder)
			{
				this.computation = computation;
				this.binder = binder;
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncPrimitives.Bind<Unit, RecordState>(ctxt, computation, binder);
			}
		}

		[Serializable]
		internal sealed class readMicrophone@64-1 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			public Resampler<ProcessingState> resampler;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> consumer;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@64-1(Resampler<ProcessingState> resampler, Lazy<FSharpAsync<Unit>> consumer)
			{
				this.resampler = resampler;
				this.consumer = consumer;
			}

			public override FSharpAsync<Unit> Invoke(Unit unitVar)
			{
				FSharpAsync<RecordState> computation = channel.AsyncGet((FSharpOption<int>)null);
				FSharpFunc<RecordState, FSharpAsync<Unit>> binder = new readMicrophone@65-2(resampler, consumer);
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new readMicrophone@64-9(computation, binder));
			}
		}

		[Serializable]
		internal sealed class readMicrophone@62 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			public Resampler<ProcessingState> resampler;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> consumer;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal readMicrophone@62(Resampler<ProcessingState> resampler, Lazy<FSharpAsync<Unit>> consumer)
			{
				this.resampler = resampler;
				this.consumer = consumer;
			}

			public override FSharpAsync<Unit> Invoke(Unit unitVar)
			{
				return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>((FSharpFunc<Unit, FSharpAsync<Unit>>)new readMicrophone@64-1(resampler, consumer));
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class readMicrophone@82-10
		{
			internal static void Invoke(orig_Start orig, DissonanceComms self)
			{
				orig.Invoke(self);
				MicrophoneSubscriber microphoneSubscriber = new MicrophoneSubscriber();
				self.SubscribeToRecordedAudio((IMicrophoneSubscriber)(object)microphoneSubscriber);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class readMicrophone@89-11
		{
			internal static void Invoke(orig_StartTrackingAllPlayerVoices orig, StartOfRound self)
			{
				isReady = true;
				orig.Invoke(self);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class readMicrophone@95-12
		{
			internal static void Invoke(orig_OnDestroy orig, StartOfRound self)
			{
				isReady = false;
				orig.Invoke(self);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class readMicrophone@99-13
		{
			internal static void Invoke(orig_ReviveDeadPlayers orig, StartOfRound self)
			{
				isReady = false;
				orig.Invoke(self);
			}
		}

		[Literal]
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		public const int SamplesPerWindow = 1024;

		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static BlockingQueueAgent<RecordState> channel => <StartupCode$Mirage>.$Mirage.Hook.Microphone.channel@38-1;

		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static bool isReady
		{
			get
			{
				return <StartupCode$Mirage>.$Mirage.Hook.Microphone.isReady@39;
			}
			set
			{
				<StartupCode$Mirage>.$Mirage.Hook.Microphone.isReady@39 = value;
			}
		}

		[CompilerGenerated]
		internal static FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>> func1@1(FSharpFunc<RecordAction, FSharpAsync<Unit>> k)
		{
			return new recorder@59-2(k);
		}

		[CompilerGenerated]
		internal static FSharpFunc<RecordAction, FSharpAsync<Unit>> func1@1-1(FSharpAsync<Unit> k)
		{
			return new recorder@59-4(k);
		}

		[CompilerGenerated]
		internal static FSharpAsync<float> func2@1-1(float x)
		{
			return FSharpFunc<Tuple<Return, FSharpAsync<float>>, float>.InvokeFast<FSharpAsync<float>>((FSharpFunc<Tuple<Return, FSharpAsync<float>>, FSharpFunc<float, FSharpAsync<float>>>)voiceDetector@60-1.@_instance, new Tuple<Return, FSharpAsync<float>>(null, null), x);
		}

		public static void readMicrophone(string recordingDirectory)
		{
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Expected O, but got Unknown
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Expected O, but got Unknown
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Expected O, but got Unknown
			SileroVAD silero = API.SileroVAD(1024);
			int value = Mirage.Domain.Config.localConfig.MinAudioDurationMs@.Value;
			FSharpFunc<ProcessingState, bool> @_instance;
			@_instance = recorder@59.@_instance;
			FSharpFunc<FSharpFunc<ProcessingState, FSharpFunc<RecordAction, FSharpAsync<Unit>>>, Recorder<ProcessingState>> func = new recorder@59-1(recordingDirectory, value, @_instance);
			FSharpFunc<FSharpFunc<RecordAction, FSharpAsync<Unit>>, Recorder<ProcessingState>> val = new recorder@59-3(func);
			FSharpAsync<Unit> k = FSharpFunc<Tuple<Return, FSharpAsync<Unit>>, Unit>.InvokeFast<FSharpAsync<Unit>>((FSharpFunc<Tuple<Return, FSharpAsync<Unit>>, FSharpFunc<Unit, FSharpAsync<Unit>>>)recorder@59-5.@_instance, new Tuple<Return, FSharpAsync<Unit>>(null, null), (Unit)null);
			Recorder<ProcessingState> val2 = val.Invoke(func1@1-1(k));
			int value2 = Mirage.Domain.Config.localConfig.MinSilenceDurationMs@.Value;
			voiceDetector@60 @_instance2;
			@_instance2 = voiceDetector@60.@_instance;
			voiceDetector@60-2 voiceDetector@60- = new voiceDetector@60-2(silero);
			FSharpFunc<Tuple<ProcessingState, DetectAction>, FSharpAsync<Unit>> f = Recorder.writeRecorder<ProcessingState>(val2);
			VoiceDetector<ProcessingState> val3 = Detection.VoiceDetector<ProcessingState>(value2, (FSharpFunc<ProcessingState, FSharpOption<float>>)@_instance2, (FSharpFunc<float[], FSharpAsync<float>>)voiceDetector@60-, (FSharpFunc<ProcessingState, FSharpFunc<DetectAction, FSharpAsync<Unit>>>)(object)new voiceDetector@60-3(f));
			Resampler<ProcessingState> resampler = Resampler.Resampler<ProcessingState>(Detection.writeDetector<ProcessingState>(val3));
			Lazy<FSharpAsync<Unit>> consumer = default(Lazy<FSharpAsync<Unit>>);
			FSharpFunc<Unit, FSharpAsync<Unit>> val4 = new readMicrophone@62(resampler, consumer);
			consumer = LazyExtensions.Create<FSharpAsync<Unit>>(val4);
			((readMicrophone@62)val4).consumer = consumer;
			k = consumer.Value;
			FSharpAsync.Start(k, (FSharpOption<CancellationToken>)null);
			DissonanceComms.Start += new hook_Start(readMicrophone@82-10.Invoke);
			StartOfRound.StartTrackingAllPlayerVoices += new hook_StartTrackingAllPlayerVoices(readMicrophone@89-11.Invoke);
			StartOfRound.OnDestroy += new hook_OnDestroy(readMicrophone@95-12.Invoke);
			StartOfRound.ReviveDeadPlayers += new hook_ReviveDeadPlayers(readMicrophone@99-13.Invoke);
		}

		static Microphone()
		{
			<StartupCode$Mirage>.$Mirage.Hook.Microphone.init@ = 0;
			_ = <StartupCode$Mirage>.$Mirage.Hook.Microphone.init@;
		}
	}
}
namespace <StartupCode$Mirage>.$Mirage.Hook
{
	internal static class Microphone
	{
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		internal static readonly BlockingQueueAgent<Mirage.Hook.Microphone.RecordState> channel@38-1;

		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		internal static bool isReady@39;

		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		[CompilerGenerated]
		[DebuggerNonUserCode]
		internal static int init@;

		static Microphone()
		{
			channel@38-1 = new BlockingQueueAgent<Mirage.Hook.Microphone.RecordState>(int.MaxValue);
			isReady@39 = false;
		}
	}
}
namespace Mirage.Hook
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class Prefab
	{
		[Serializable]
		internal sealed class registerPrefab@19-1 : FSharpFunc<Type, Component>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public GameObject objectArg;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal registerPrefab@19-1(GameObject objectArg)
			{
				this.objectArg = objectArg;
			}

			public override Component Invoke(Type componentType)
			{
				return objectArg.AddComponent(componentType);
			}
		}

		[Serializable]
		internal sealed class registerPrefab@19-2 : FSharpFunc<Type, Unit>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Type, Component> func1;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal registerPrefab@19-2(FSharpFunc<Type, Component> func1)
			{
				this.func1 = func1;
			}

			public override Unit Invoke(Type x)
			{
				Component val = func1.Invoke(x);
				return null;
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class registerPrefab@12
		{
			internal static void Invoke(orig_Start orig, MenuManager self)
			{
				orig.Invoke(self);
				if (initialized)
				{
					return;
				}
				initialized = true;
				List<NetworkPrefab> prefabs = ((Component)GameNetworkManager.Instance).GetComponent<NetworkManager>().NetworkConfig.Prefabs.m_Prefabs;
				foreach (NetworkPrefab item in prefabs)
				{
					EnemyAI component = item.Prefab.GetComponent<EnemyAI>();
					if (component != null)
					{
						GameObject gameObject = ((Component)component).gameObject;
						FSharpFunc<Type, Component> func = new registerPrefab@19-1(gameObject);
						FSharpFunc<Type, Unit> val = new registerPrefab@19-2(func);
						FSharpList<Type> val2 = FSharpList<Type>.Cons(typeof(Mirage.Unity.AudioStream.AudioStream), FSharpList<Type>.Cons(typeof(Mirage.Unity.MimicPlayer.MimicPlayer), FSharpList<Type>.Cons(typeof(Mirage.Unity.MirageVoice.MimicVoice), FSharpList<Type>.Empty)));
						Iterate val3 = null;
						Iterate.Iterate<Type>(val2, val);
					}
				}
			}
		}

		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public static bool initialized
		{
			get
			{
				return <StartupCode$Mirage>.$Mirage.Hook.Prefab.initialized@9;
			}
			set
			{
				<StartupCode$Mirage>.$Mirage.Hook.Prefab.initialized@9 = value;
			}
		}

		public static void registerPrefab()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			MenuManager.Start += new hook_Start(registerPrefab@12.Invoke);
		}
	}
}
namespace <StartupCode$Mirage>.$Mirage.Hook
{
	internal static class Prefab
	{
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		internal static bool initialized@9;

		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		[CompilerGenerated]
		[DebuggerNonUserCode]
		internal static int init@;

		static Prefab()
		{
			initialized@9 = false;
		}
	}
}
namespace Mirage.Hook
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class MaskedPlayerEnemy
	{
		[Serializable]
		internal sealed class hookMaskedEnemy@20-1 : FSharpFunc<Transform, bool>
		{
			internal static readonly hookMaskedEnemy@20-1 @_instance = new hookMaskedEnemy@20-1();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal hookMaskedEnemy@20-1()
			{
			}

			public override bool Invoke(Transform _arg1)
			{
				return ((Object)_arg1).name.StartsWith("HeadMask");
			}
		}

		[Serializable]
		internal sealed class hookMaskedEnemy@21-2 : FSharpFunc<Transform, Unit>
		{
			internal static readonly hookMaskedEnemy@21-2 @_instance = new hookMaskedEnemy@21-2();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal hookMaskedEnemy@21-2()
			{
			}

			public override Unit Invoke(Transform _arg2)
			{
				((Component)_arg2).gameObject.SetActive(false);
				return null;
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@15
		{
			internal static void Invoke(orig_Start orig, MaskedPlayerEnemy self)
			{
				((Component)self).GetComponent<Mirage.Unity.MimicPlayer.MimicPlayer>().StartMimicking();
				orig.Invoke(self);
				if (!Mirage.Domain.Config.getConfig().enableMaskTexture@)
				{
					Transform[] componentsInChildren = ((Component)self).GetComponentsInChildren<Transform>();
					FSharpFunc<Transform, bool> @_instance;
					@_instance = hookMaskedEnemy@20-1.@_instance;
					Filter val = null;
					Transform[] array = ArrayModule.Filter<Transform>(@_instance, componentsInChildren);
					FSharpFunc<Transform, Unit> @_instance2;
					@_instance2 = hookMaskedEnemy@21-2.@_instance;
					Iterate val2 = null;
					Iterate.Iterate<Transform>(array, @_instance2);
				}
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@24-3
		{
			internal static void Invoke(orig_SetHandsOutClientRpc orig, MaskedPlayerEnemy self, bool _arg1)
			{
				orig.Invoke(self, Mirage.Domain.Config.getConfig().enableArmsOut@);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@28-4
		{
			internal static void Invoke(orig_SetHandsOutServerRpc orig, MaskedPlayerEnemy self, bool _arg2)
			{
				orig.Invoke(self, Mirage.Domain.Config.getConfig().enableArmsOut@);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@32-5
		{
			internal static IEnumerator Invoke(orig_EndOfGame orig, StartOfRound self, int bodiesInsured, int connectedPlayersOnServer, int scrapCollected)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				PlayerControllerB[] allPlayerScripts = self.allPlayerScripts;
				for (int i = 0; i < allPlayerScripts.Length; i++)
				{
					allPlayerScripts[i].deadBody = null;
				}
				return orig.Invoke(self, bodiesInsured, connectedPlayersOnServer, scrapCollected);
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@40-6
		{
			internal static void Invoke(orig_Start orig, GameNetworkManager self)
			{
				orig.Invoke(self);
				List<NetworkPrefab> prefabs = NetworkManager.Singleton.NetworkConfig.Prefabs.m_Prefabs;
				foreach (NetworkPrefab item in prefabs)
				{
					if (item.Prefab.GetComponent<MaskedPlayerEnemy>() != null && maskedPrefab == null)
					{
						maskedPrefab = item.Prefab.GetComponent<MaskedPlayerEnemy>();
					}
				}
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@71-8
		{
			internal static bool Invoke(SpawnableEnemyWithRarity delegateArg0)
			{
				return isMaskedEnemy@62(delegateArg0);
			}
		}

		[Serializable]
		internal sealed class totalWeight@74 : FSharpFunc<SpawnableEnemyWithRarity, bool>
		{
			internal static readonly totalWeight@74 @_instance = new totalWeight@74();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal totalWeight@74()
			{
			}

			public override bool Invoke(SpawnableEnemyWithRarity x)
			{
				return !isMaskedEnemy@62(x);
			}
		}

		[Serializable]
		internal sealed class totalWeight@75-1 : FSharpFunc<SpawnableEnemyWithRarity, int>
		{
			internal static readonly totalWeight@75-1 @_instance = new totalWeight@75-1();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal totalWeight@75-1()
			{
			}

			public override int Invoke(SpawnableEnemyWithRarity _arg3)
			{
				return _arg3.rarity;
			}
		}

		[Serializable]
		internal sealed class totalWeight@76-2 : FSharpFunc<int, int, int>
		{
			internal static readonly totalWeight@76-2 @_instance = new totalWeight@76-2();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal totalWeight@76-2()
			{
			}

			public override int Invoke(int x, int y)
			{
				Default1 val = null;
				return x + y;
			}
		}

		[Serializable]
		[SpecialName]
		[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static class hookMaskedEnemy@47-7
		{
			internal static void Invoke(orig_Start orig, TimeOfDay self)
			{
				//IL_004e: 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_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_006e: 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_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_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_00a0: 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_00b7: 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_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_00d2: 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_0114: Expected O, but got Unknown
				//IL_0226: Unknown result type (might be due to invalid IL or missing references)
				//IL_022d: Expected O, but got Unknown
				orig.Invoke(self);
				if (!((NetworkBehaviour)self).IsHost || !Mirage.Domain.Config.localConfig.EnableSpawnControl@.Value)
				{
					return;
				}
				EnemyType val = Object.Instantiate<EnemyType>(((EnemyAI)maskedPrefab).enemyType);
				AnimationCurve probabilityCurve = val.probabilityCurve;
				probabilityCurve.ClearKeys();
				Keyframe val2 = new Keyframe(0f, 0f);
				int num = probabilityCurve.AddKey(val2);
				val2 = new Keyframe(0.19f, 0f);
				num = probabilityCurve.AddKey(val2);
				val2 = new Keyframe(0.2f, 0.5f);
				num = probabilityCurve.AddKey(val2);
				val2 = new Keyframe(0.5f, 10f);
				num = probabilityCurve.AddKey(val2);
				val2 = new Keyframe(0.9f, 15f);
				num = probabilityCurve.AddKey(val2);
				val2 = new Keyframe(1f, 1f);
				num = probabilityCurve.AddKey(val2);
				EnemyType enemyType = val;
				List<string> list = new List<string>();
				double num2 = Mirage.Domain.Config.localConfig.MaskedSpawnChance@.Value;
				SelectableLevel[] levels = StartOfRound.Instance.levels;
				foreach (SelectableLevel val3 in levels)
				{
					int num3 = val3.Enemies.RemoveAll(hookMaskedEnemy@71-8.Invoke);
					List<SpawnableEnemyWithRarity> enemies = val3.Enemies;
					FSharpFunc<SpawnableEnemyWithRarity, bool> @_instance;
					@_instance = totalWeight@74.@_instance;
					Filter val4 = null;
					List<SpawnableEnemyWithRarity> item = new List<SpawnableEnemyWithRarity>(SeqModule.Filter<SpawnableEnemyWithRarity>(@_instance, (IEnumerable<SpawnableEnemyWithRarity>)enemies));
					FSharpFunc<SpawnableEnemyWithRarity, int> @_instance2;
					@_instance2 = totalWeight@75-1.@_instance;
					Map val5 = null;
					List<int> list2 = null;
					List<int> list3 = Map.Map<SpawnableEnemyWithRarity, int>(new Tuple<List<SpawnableEnemyWithRarity>, FSharpFunc<SpawnableEnemyWithRarity, int>>(item, @_instance2), val5);
					IEnumerable<int> enumerable = list3;
					FSharpFunc<int, FSharpFunc<int, int>> @_instance3;
					@_instance3 = (FSharpFunc<int, FSharpFunc<int, int>>)(object)totalWeight@76-2.@_instance;
					Zero val6 = null;
					int num4 = 0;
					Default1 val7 = (Default1)(object)val6;
					int num5 = 0;
					Fold val8 = null;
					num3 = SeqModule.Fold<int, int>(@_instance3, num5, enumerable);
					if (num3 > 0)
					{
						double a = (double)num3 * num2 / (100.0 - num2);
						num5 = (int)Math.Ceiling(a);
						num3 += num5;
						a = (double)num5 / (double)num3 * 100.0;
						list.Add(PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, Tuple<string, int, double>>("Level: %P(). Weight: %P(). SpawnChance: %P(F2)%%", new object[3] { val3.PlanetName, num5, a }, (Type[])null)));
						SpawnableEnemyWithRarity val9 = new SpawnableEnemyWithRarity();
						val9.rarity = num5;
						val9.enemyType = enemyType;
						val9.enemyType.MaxCount = Mirage.Domain.Config.localConfig.MaxMaskedSpawns@.Value;
						val3.Enemies.Add(val9);
					}
				}
				Mirage.Domain.Logger.logInfo.Invoke("Adjusting spawn weights for masked enemies:\n" + string.Join("\n", list));
			}
		}

		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static MaskedPlayerEnemy maskedPrefab
		{
			get
			{
				return <StartupCode$Mirage>.$Mirage.Hook.MaskedPlayerEnemy.maskedPrefab@12;
			}
			set
			{
				<StartupCode$Mirage>.$Mirage.Hook.MaskedPlayerEnemy.maskedPrefab@12 = value;
			}
		}

		internal static bool isMaskedEnemy@62(SpawnableEnemyWithRarity enemy)
		{
			if (enemy != null && enemy.enemyType != null && true && enemy.enemyType.enemyPrefab != null)
			{
				return string.Equals(enemy.enemyType.enemyName, ((EnemyAI)maskedPrefab).enemyType.enemyName);
			}
			return false;
		}

		public static void hookMaskedEnemy()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Expected O, but got Unknown
			MaskedPlayerEnemy.Start += new hook_Start(hookMaskedEnemy@15.Invoke);
			MaskedPlayerEnemy.SetHandsOutClientRpc += new hook_SetHandsOutClientRpc(hookMaskedEnemy@24-3.Invoke);
			MaskedPlayerEnemy.SetHandsOutServerRpc += new hook_SetHandsOutServerRpc(hookMaskedEnemy@28-4.Invoke);
			StartOfRound.EndOfGame += new hook_EndOfGame(hookMaskedEnemy@32-5.Invoke);
			GameNetworkManager.Start += new hook_Start(hookMaskedEnemy@40-6.Invoke);
			TimeOfDay.Start += new hook_Start(hookMaskedEnemy@47-7.Invoke);
		}
	}
}
namespace <StartupCode$Mirage>.$Mirage.Hook
{
	internal static class MaskedPlayerEnemy
	{
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		internal static MaskedPlayerEnemy maskedPrefab@12;

		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		[CompilerGenerated]
		[DebuggerNonUserCode]
		internal static int init@;

		static MaskedPlayerEnemy()
		{
			maskedPrefab@12 = null;
		}
	}
}
namespace Mirage.Unity
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class MirageVoice
	{
		[Serializable]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public class MimicVoice : NetworkBehaviour
		{
			internal FSharpRef<MimicVoice> self = new FSharpRef<MimicVoice>((MimicVoice)null);

			internal Mirage.Domain.Audio.Recording.RecordingManager recordingManager;

			internal GameObject voicePlayback;

			internal AudioStream.AudioStream audioStream;

			internal MimicPlayer.MimicPlayer mimicPlayer;

			internal EnemyAI enemyAI;

			internal int init@22;

			public MimicVoice()
			{
				self.contents = this;
				recordingManager = Mirage.Domain.Audio.Recording.RecordingManager();
				voicePlayback = null;
				audioStream = null;
				mimicPlayer = null;
				enemyAI = null;
				init@22 = 1;
			}

			public void Awake()
			{
				if (init@22 < 1)
				{
					IntrinsicFunctions.FailInit();
				}
				audioStream = ((Component)this).GetComponent<AudioStream.AudioStream>();
				mimicPlayer = ((Component)this).GetComponent<MimicPlayer.MimicPlayer>();
				enemyAI = ((Component)this).GetComponent<EnemyAI>();
				voicePlayback = Object.Instantiate<GameObject>(Mirage.Hook.Dissonance.dissonance._playbackPrefab2);
				GameObject objectArg = voicePlayback;
				FSharpFunc<Type, Component> func = new removeComponent@76(objectArg);
				FSharpFunc<Type, Unit> val = new removeComponent@76-1(func);
				FSharpList<Type> val2 = FSharpList<Type>.Cons(typeof(VoicePlayback), FSharpList<Type>.Cons(typeof(SamplePlaybackComponent), FSharpList<Type>.Cons(typeof(PlayerVoiceIngameSettings), FSharpList<Type>.Empty)));
				Iterate val3 = null;
				Iterate.Iterate<Type>(val2, val);
				((Behaviour)voicePlayback.GetComponent<AudioLowPassFilter>()).enabled = true;
				audioStream.AudioSource = voicePlayback.GetComponent<AudioSource>();
				audioStream.AudioSource.loop = false;
				voicePlayback.transform.parent = ((Component)audioStream).transform;
				voicePlayback.SetActive(true);
			}

			public void Start()
			{
				if (init@22 < 1)
				{
					IntrinsicFunctions.FailInit();
				}
				startVoiceMimic();
			}

			public void LateUpdate()
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				if (init@22 < 1)
				{
					IntrinsicFunctions.FailInit();
				}
				voicePlayback.transform.position = ((Component)this).transform.position;
			}

			public void Update()
			{
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_0110: Expected O, but got Unknown
				if (init@22 < 1)
				{
					IntrinsicFunctions.FailInit();
				}
				if (mimicPlayer.mimickingPlayer == null || enemyAI == null)
				{
					audioStream.AudioSource.mute = true;
					return;
				}
				PlayerControllerB localPlayerController = StartOfRound.Instance.localPlayerController;
				PlayerControllerB val = ((localPlayerController.spectatedPlayerScript != null) ? localPlayerController.spectatedPlayerScript : localPlayerController);
				audioStream.AudioSource.volume = (HashCompare.GenericEqualityIntrinsic<PlayerControllerB>(mimicPlayer.mimickingPlayer, localPlayerController) ? Mirage.Domain.Setting.settings.localPlayerVolume@ : ((mimicPlayer.mimickingPlayer != null && mimicPlayer.mimickingPlayer.currentVoiceChatAudioSource != null) ? mimicPlayer.mimickingPlayer.currentVoiceChatAudioSource.volume : 1f));
				audioStream.AudioSource.outputAudioMixerGroup = SoundManager.Instance.playerVoiceMixers[(uint)mimicPlayer.mimickingPlayer.playerClientId];
				audioStream.AudioSource.mute = enemyAI.isEnemyDead || (!Mirage.Domain.Config.getConfig().mimicVoiceWhileHiding@ && maskedEnemyIsHiding@111(this, null)) || isMimicLocalPlayerMuted@99(this, localPlayerController, null) || isNotHauntedOrDisappearedDressGirl@105(this, null) || val.isInsideFactory == enemyAI.isOutside;
			}

			[CompilerGenerated]
			internal void startVoiceMimic()
			{
				Lazy<FSharpAsync<Unit>> runMimicLoop = default(Lazy<FSharpAsync<Unit>>);
				FSharpFunc<Unit, FSharpAsync<Unit>> val = new clo@45-22(this, runMimicLoop);
				runMimicLoop = LazyExtensions.Create<FSharpAsync<Unit>>(val);
				((clo@45-22)val).runMimicLoop = runMimicLoop;
				FSharpAsync<Unit> value = runMimicLoop.Value;
				FSharpAsync.StartImmediate(value, FSharpOption<CancellationToken>.Some(((MonoBehaviour)IntrinsicFunctions.CheckThis<MimicVoice>(self.contents)).destroyCancellationToken));
			}

			protected override void __initializeVariables()
			{
				((NetworkBehaviour)this).__initializeVariables();
			}

			[MethodImpl(MethodImplOptions.NoInlining)]
			protected internal override string __getTypeName()
			{
				return "MimicVoice";
			}
		}

		[Serializable]
		internal sealed class removeComponent@76 : FSharpFunc<Type, Component>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public GameObject objectArg;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal removeComponent@76(GameObject objectArg)
			{
				this.objectArg = objectArg;
			}

			public override Component Invoke(Type type)
			{
				return objectArg.GetComponent(type);
			}
		}

		[Serializable]
		internal sealed class removeComponent@76-1 : FSharpFunc<Type, Unit>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Type, Component> func1;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal removeComponent@76-1(FSharpFunc<Type, Component> func1)
			{
				this.func1 = func1;
			}

			public override Unit Invoke(Type x)
			{
				Component val = func1.Invoke(x);
				Object.Destroy((Object)(object)val);
				return null;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@33-1 : FSharpFunc<FSharpOption<Unit>, Unit>
		{
			internal static readonly mimicVoice@33-1 @_instance = new mimicVoice@33-1();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@33-1()
			{
			}

			public override Unit Invoke(FSharpOption<Unit> _arg1)
			{
				return null;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@33-2 : FSharpFunc<FSharpAsync<FSharpOption<Unit>>, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<FSharpOption<Unit>, Unit> f;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@33-2(FSharpFunc<FSharpOption<Unit>, Unit> f)
			{
				this.f = f;
			}

			public override FSharpAsync<Unit> Invoke(FSharpAsync<FSharpOption<Unit>> x)
			{
				Map val = null;
				FSharpAsync<Unit> val2 = null;
				return Map.Map<FSharpOption<Unit>, Unit>(new Tuple<FSharpAsync<FSharpOption<Unit>>, FSharpFunc<FSharpOption<Unit>, Unit>>(x, f), val);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-3 : FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@42-3 @_instance = new mimicVoice@42-3();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-3()
			{
			}

			public override FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> Invoke(Tuple<Return, FSharpAsync<FSharpOption<Unit>>> tupledArg)
			{
				return Return.Return<FSharpOption<Unit>>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-4 : FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>>
		{
			internal static readonly mimicVoice@42-4 @_instance = new mimicVoice@42-4();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-4()
			{
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(Unit x)
			{
				return func2@1(FSharpOption<Unit>.Some(x));
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-5 : FSharpFunc<Unit, FSharpOption<Unit>>
		{
			internal static readonly mimicVoice@42-5 @_instance = new mimicVoice@42-5();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-5()
			{
			}

			public override FSharpOption<Unit> Invoke(Unit arg0)
			{
				return FSharpOption<Unit>.Some(arg0);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-8 : FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@42-8 @_instance = new mimicVoice@42-8();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-8()
			{
			}

			public override FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> Invoke(Tuple<Return, FSharpAsync<FSharpOption<Unit>>> tupledArg)
			{
				return Return.Return<FSharpOption<Unit>>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-7 : FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@42-7 @_instance = new mimicVoice@42-7();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-7()
			{
			}

			public override OptionT<FSharpAsync<FSharpOption<Unit>>> Invoke(Unit x)
			{
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				FSharpOption<Unit> val = FSharpOption<Unit>.Some(x);
				return OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpOption<Unit>>.InvokeFast<FSharpAsync<FSharpOption<Unit>>>((FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>)mimicVoice@42-8.@_instance, new Tuple<Return, FSharpAsync<FSharpOption<Unit>>>(null, null), val));
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-6 : FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>>
		{
			internal static readonly mimicVoice@42-6 @_instance = new mimicVoice@42-6();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-6()
			{
			}

			public override FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>> Invoke(Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>> tupledArg)
			{
				Default1 item = (Default1)(object)tupledArg.Item1;
				return mimicVoice@42-7.@_instance;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-10 : FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@42-10 @_instance = new mimicVoice@42-10();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-10()
			{
			}

			public override FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> Invoke(Tuple<Return, FSharpAsync<FSharpOption<Unit>>> tupledArg)
			{
				return Return.Return<FSharpOption<Unit>>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@42-9 : FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>
		{
			internal static readonly mimicVoice@42-9 @_instance = new mimicVoice@42-9();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@42-9()
			{
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(FSharpOption<Unit> maybe_value)
			{
				//IL_000d: 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)
				FSharpOption<Unit> val;
				if (maybe_value != null)
				{
					val = maybe_value;
					_ = val.Value;
					return f@1-3(null).Item;
				}
				val = null;
				return FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpOption<Unit>>.InvokeFast<FSharpAsync<FSharpOption<Unit>>>((FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>)mimicVoice@42-10.@_instance, new Tuple<Return, FSharpAsync<FSharpOption<Unit>>>(null, null), val);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@40-12 : FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@40-12 @_instance = new mimicVoice@40-12();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@40-12()
			{
			}

			public override FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> Invoke(Tuple<Return, FSharpAsync<FSharpOption<Unit>>> tupledArg)
			{
				return Return.Return<FSharpOption<Unit>>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@40-11 : FSharpFunc<FSharpOption<string>, FSharpAsync<FSharpOption<Unit>>>
		{
			public FSharpFunc<string, Unit> debug;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public MimicVoice @this;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@40-11(FSharpFunc<string, Unit> debug, MimicVoice @this)
			{
				this.debug = debug;
				this.@this = @this;
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(FSharpOption<string> maybe_value)
			{
				//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)
				if (maybe_value != null)
				{
					string value = maybe_value.Value;
					return f@1-2(this.@this, debug, value).Item;
				}
				FSharpOption<Unit> val = null;
				return FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpOption<Unit>>.InvokeFast<FSharpAsync<FSharpOption<Unit>>>((FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>)mimicVoice@40-12.@_instance, new Tuple<Return, FSharpAsync<FSharpOption<Unit>>>(null, null), val);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@35-15 : FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@35-15 @_instance = new mimicVoice@35-15();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@35-15()
			{
			}

			public override FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> Invoke(Tuple<Return, FSharpAsync<FSharpOption<Unit>>> tupledArg)
			{
				return Return.Return<FSharpOption<Unit>>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@35-14 : FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@35-14 @_instance = new mimicVoice@35-14();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@35-14()
			{
			}

			public override OptionT<FSharpAsync<FSharpOption<Unit>>> Invoke(Unit x)
			{
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				FSharpOption<Unit> val = FSharpOption<Unit>.Some(x);
				return OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpOption<Unit>>.InvokeFast<FSharpAsync<FSharpOption<Unit>>>((FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>)mimicVoice@35-15.@_instance, new Tuple<Return, FSharpAsync<FSharpOption<Unit>>>(null, null), val));
			}
		}

		[Serializable]
		internal sealed class mimicVoice@35-13 : FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>>
		{
			internal static readonly mimicVoice@35-13 @_instance = new mimicVoice@35-13();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@35-13()
			{
			}

			public override FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>> Invoke(Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>> tupledArg)
			{
				Default1 item = (Default1)(object)tupledArg.Item1;
				return mimicVoice@35-14.@_instance;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@34-16 : FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>>
		{
			public FSharpFunc<string, Unit> debug;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public MimicVoice @this;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@34-16(FSharpFunc<string, Unit> debug, MimicVoice @this)
			{
				this.debug = debug;
				this.@this = @this;
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(Unit _arg1)
			{
				//IL_000d: 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 x@1-1(this.@this, debug, null).Item;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@43-19 : FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@43-19 @_instance = new mimicVoice@43-19();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@43-19()
			{
			}

			public override FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> Invoke(Tuple<Return, FSharpAsync<FSharpOption<Unit>>> tupledArg)
			{
				return Return.Return<FSharpOption<Unit>>(tupledArg.Item2, tupledArg.Item1);
			}
		}

		[Serializable]
		internal sealed class mimicVoice@43-18 : FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>
		{
			internal static readonly mimicVoice@43-18 @_instance = new mimicVoice@43-18();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@43-18()
			{
			}

			public override OptionT<FSharpAsync<FSharpOption<Unit>>> Invoke(Unit x)
			{
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				FSharpOption<Unit> val = FSharpOption<Unit>.Some(x);
				return OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpOption<Unit>>.InvokeFast<FSharpAsync<FSharpOption<Unit>>>((FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>)mimicVoice@43-19.@_instance, new Tuple<Return, FSharpAsync<FSharpOption<Unit>>>(null, null), val));
			}
		}

		[Serializable]
		internal sealed class mimicVoice@43-17 : FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>>
		{
			internal static readonly mimicVoice@43-17 @_instance = new mimicVoice@43-17();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@43-17()
			{
			}

			public override FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>> Invoke(Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>> tupledArg)
			{
				Default1 item = (Default1)(object)tupledArg.Item1;
				return mimicVoice@43-18.@_instance;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@34-20 : FSharpFunc<Exception, FSharpAsync<FSharpOption<Unit>>>
		{
			internal static readonly mimicVoice@34-20 @_instance = new mimicVoice@34-20();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@34-20()
			{
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(Exception x)
			{
				//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)
				return catchHandler@1-3(x).Item;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@34-21 : FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<FSharpOption<Unit>> arg00;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@34-21(FSharpAsync<FSharpOption<Unit>> arg00)
			{
				this.arg00 = arg00;
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(Unit unitVar0)
			{
				return arg00;
			}
		}

		[Serializable]
		internal sealed class mimicVoice@33-22 : FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>>
		{
			public FSharpFunc<string, Unit> debug;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public MimicVoice @this;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal mimicVoice@33-22(FSharpFunc<string, Unit> debug, MimicVoice @this)
			{
				this.debug = debug;
				this.@this = @this;
			}

			public override FSharpAsync<FSharpOption<Unit>> Invoke(Unit _arg1)
			{
				//IL_000d: 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 x@1(this.@this, debug, null).Item;
			}
		}

		[Serializable]
		internal sealed class debug@50-1<a> : FSharpFunc<a, Unit>
		{
			internal static readonly debug@50-1<a> @_instance = new debug@50-1<a>();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal debug@50-1()
			{
			}

			public override Unit Invoke(a message)
			{
				return null;
			}
		}

		[Serializable]
		internal sealed class clo@66-27 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			internal static readonly clo@66-27 @_instance = new clo@66-27();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@66-27()
			{
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncActivation<Unit>.Success(ctxt, (Unit)null);
			}
		}

		[Serializable]
		internal sealed class clo@66-26 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			internal static readonly clo@66-26 @_instance = new clo@66-26();

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@66-26()
			{
			}

			public override FSharpAsync<Unit> Invoke(Unit _arg6)
			{
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)clo@66-27.@_instance);
			}
		}

		[Serializable]
		internal sealed class clo@66-28 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> computation;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Unit, FSharpAsync<Unit>> binder;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@66-28(FSharpAsync<Unit> computation, FSharpFunc<Unit, FSharpAsync<Unit>> binder)
			{
				this.computation = computation;
				this.binder = binder;
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncPrimitives.Bind<Unit, Unit>(ctxt, computation, binder);
			}
		}

		[Serializable]
		internal sealed class clo@64-25 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> runMimicLoop;

			public Stopwatch sw2;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@64-25(Lazy<FSharpAsync<Unit>> runMimicLoop, Stopwatch sw2)
			{
				this.runMimicLoop = runMimicLoop;
				this.sw2 = sw2;
			}

			public override FSharpAsync<Unit> Invoke(Unit _arg5)
			{
				string text = sw2.Elapsed.TotalMilliseconds.ToString("F2");
				string text2 = PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, string>("Finished sleeping. Waited for %P() seconds.", new object[1] { text }, (Type[])null));
				FSharpAsync<Unit> value = runMimicLoop.Value;
				FSharpFunc<Unit, FSharpAsync<Unit>> @_instance;
				@_instance = clo@66-26.@_instance;
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new clo@66-28(value, @_instance));
			}
		}

		[Serializable]
		internal sealed class clo@63-29 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> computation;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Unit, FSharpAsync<Unit>> binder;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@63-29(FSharpAsync<Unit> computation, FSharpFunc<Unit, FSharpAsync<Unit>> binder)
			{
				this.computation = computation;
				this.binder = binder;
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncPrimitives.Bind<Unit, Unit>(ctxt, computation, binder);
			}
		}

		[Serializable]
		internal sealed class clo@61-24 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> runMimicLoop;

			public int delay;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@61-24(Lazy<FSharpAsync<Unit>> runMimicLoop, int delay)
			{
				this.runMimicLoop = runMimicLoop;
				this.delay = delay;
			}

			public override FSharpAsync<Unit> Invoke(Unit _arg4)
			{
				string text = PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, double>("After mimicVoice. Sleeping for %P() seconds.", new object[1] { (double)delay / 1000.0 }, (Type[])null));
				Stopwatch sw = Stopwatch.StartNew();
				FSharpAsync<Unit> computation = FSharpAsync.Sleep(delay);
				FSharpFunc<Unit, FSharpAsync<Unit>> binder = new clo@64-25(runMimicLoop, sw);
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new clo@63-29(computation, binder));
			}
		}

		[Serializable]
		internal sealed class clo@60-30 : FSharpFunc<AsyncActivation<Unit>, AsyncReturn>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpAsync<Unit> computation;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public FSharpFunc<Unit, FSharpAsync<Unit>> binder;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@60-30(FSharpAsync<Unit> computation, FSharpFunc<Unit, FSharpAsync<Unit>> binder)
			{
				this.computation = computation;
				this.binder = binder;
			}

			public override AsyncReturn Invoke(AsyncActivation<Unit> ctxt)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return AsyncPrimitives.Bind<Unit, Unit>(ctxt, computation, binder);
			}
		}

		[Serializable]
		internal sealed class clo@47-23 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public MimicVoice @this;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> runMimicLoop;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@47-23(MimicVoice @this, Lazy<FSharpAsync<Unit>> runMimicLoop)
			{
				this.@this = @this;
				this.runMimicLoop = runMimicLoop;
			}

			public override FSharpAsync<Unit> Invoke(Unit unitVar)
			{
				Guid guid = Guid.NewGuid();
				Stopwatch stopwatch = Stopwatch.StartNew();
				object enemyAI = this.@this.enemyAI;
				int delay = ((!(enemyAI is MaskedPlayerEnemy)) ? random.Next(Mirage.Domain.Config.getConfig().minimumDelayNonMasked@, Mirage.Domain.Config.getConfig().maximumDelayNonMasked@ + 1) : random.Next(Mirage.Domain.Config.getConfig().minimumDelayMasked@, Mirage.Domain.Config.getConfig().maximumDelayMasked@ + 1));
				FSharpAsync<Unit> computation = mimicVoice@32(this.@this, debug@49<string>());
				FSharpFunc<Unit, FSharpAsync<Unit>> binder = new clo@61-24(runMimicLoop, delay);
				return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new clo@60-30(computation, binder));
			}
		}

		[Serializable]
		internal sealed class clo@45-22 : FSharpFunc<Unit, FSharpAsync<Unit>>
		{
			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public MimicVoice @this;

			[DebuggerBrowsable(DebuggerBrowsableState.Never)]
			[CompilerGenerated]
			[DebuggerNonUserCode]
			public Lazy<FSharpAsync<Unit>> runMimicLoop;

			[CompilerGenerated]
			[DebuggerNonUserCode]
			internal clo@45-22(MimicVoice @this, Lazy<FSharpAsync<Unit>> runMimicLoop)
			{
				this.@this = @this;
				this.runMimicLoop = runMimicLoop;
			}

			public override FSharpAsync<Unit> Invoke(Unit unitVar)
			{
				return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>((FSharpFunc<Unit, FSharpAsync<Unit>>)new clo@47-23(this.@this, runMimicLoop));
			}
		}

		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		internal static Random random => <StartupCode$Mirage>.$Mirage.Unity.MirageVoice.random@20;

		internal static bool isMimicLocalPlayerMuted@99(MimicVoice _, PlayerControllerB localPlayer, Unit unitVar0)
		{
			bool result = Mirage.Domain.Setting.settings.localPlayerVolume@ == 0f;
			bool flag = !Mirage.Domain.Config.getConfig().enableMimicVoiceWhileAlive@ && !_.mimicPlayer.mimickingPlayer.isPlayerDead;
			if (HashCompare.GenericEqualityIntrinsic<PlayerControllerB>(_.mimicPlayer.mimickingPlayer, localPlayer))
			{
				if (flag)
				{
					return true;
				}
				return result;
			}
			return false;
		}

		internal static bool isNotHauntedOrDisappearedDressGirl@105(MimicVoice _, Unit unitVar0)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			object enemyAI = _.enemyAI;
			if (enemyAI is DressGirlAI)
			{
				DressGirlAI val = (DressGirlAI)(object)_.enemyAI;
				bool flag = val.staringInHaunt || (((EnemyAI)val).moveTowardsDestination && ((EnemyAI)val).movingTowardsTargetPlayer);
				if (!val.hauntingLocalPlayer)
				{
					return true;
				}
				return !flag;
			}
			return false;
		}

		internal static bool maskedEnemyIsHiding@111(MimicVoice _, Unit unitVar0)
		{
			//IL_001d: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			object enemyAI = _.enemyAI;
			if (enemyAI is MaskedPlayerEnemy && Vector3.Distance(((Component)_.enemyAI).transform.position, ((MaskedPlayerEnemy)(object)_.enemyAI).shipHidingSpot) < 0.4f && _.enemyAI.agent.speed == 0f)
			{
				return ((MaskedPlayerEnemy)(object)_.enemyAI).crouching;
			}
			return false;
		}

		[CompilerGenerated]
		internal static FSharpAsync<FSharpOption<Unit>> func2@1(FSharpOption<Unit> x)
		{
			return FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpOption<Unit>>.InvokeFast<FSharpAsync<FSharpOption<Unit>>>((FSharpFunc<Tuple<Return, FSharpAsync<FSharpOption<Unit>>>, FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>>>)mimicVoice@42-3.@_instance, new Tuple<Return, FSharpAsync<FSharpOption<Unit>>>(null, null), x);
		}

		[CompilerGenerated]
		internal static OptionT<FSharpAsync<FSharpOption<Unit>>> f@1-3(Unit _arg2)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			return FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, Unit>.InvokeFast<OptionT<FSharpAsync<FSharpOption<Unit>>>>((FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>>)mimicVoice@42-6.@_instance, new Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>(null, default(OptionT<FSharpAsync<FSharpOption<Unit>>>)), (Unit)null);
		}

		[CompilerGenerated]
		internal static OptionT<FSharpAsync<FSharpOption<Unit>>> f@1-2(MimicVoice @this, FSharpFunc<string, Unit> debug, string recording)
		{
			//IL_0076: 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_007c: 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_0088: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			debug.Invoke(PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, string>("Found recording: %P()", new object[1] { recording }, (Type[])null)));
			FSharpAsync<Unit> val = @this.audioStream.StreamAudioFromFile(recording, debug);
			_ = null;
			OptionT<FSharpAsync<FSharpOption<Unit>>> val4;
			Bind val2;
			FSharpAsync<FSharpOption<Unit>> val3;
			if (false)
			{
				FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>> @_instance;
				@_instance = mimicVoice@42-4.@_instance;
				val2 = null;
				val3 = null;
				val4 = OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(Bind.op_GreaterGreaterEquals<Unit, FSharpOption<Unit>>(val, @_instance));
			}
			else
			{
				FSharpFunc<Unit, FSharpOption<Unit>> @_instance2;
				@_instance2 = mimicVoice@42-5.@_instance;
				Map val5 = null;
				val3 = null;
				val4 = OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(Map.Map<Unit, FSharpOption<Unit>>(new Tuple<FSharpAsync<Unit>, FSharpFunc<Unit, FSharpOption<Unit>>>(val, @_instance2), val5));
			}
			OptionT<FSharpAsync<FSharpOption<Unit>>> val6 = val4;
			val2 = null;
			OptionT<FSharpAsync<FSharpOption<Unit>>> val7 = default(OptionT<FSharpAsync<FSharpOption<Unit>>>);
			val3 = val6.Item;
			FSharpFunc<FSharpOption<Unit>, FSharpAsync<FSharpOption<Unit>>> @_instance3;
			@_instance3 = mimicVoice@42-9.@_instance;
			Bind val8 = null;
			FSharpAsync<FSharpOption<Unit>> val9 = null;
			return OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(Bind.op_GreaterGreaterEquals<FSharpOption<Unit>, FSharpOption<Unit>>(val3, @_instance3));
		}

		[CompilerGenerated]
		internal static OptionT<FSharpAsync<FSharpOption<Unit>>> x@1-1(MimicVoice @this, FSharpFunc<string, Unit> debug, Unit unitVar)
		{
			//IL_009a: 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_00a7: 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)
			//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_006a: 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)
			if (@this.enemyAI != null && @this.mimicPlayer.mimickingPlayer != null && true && HashCompare.GenericEqualityIntrinsic<PlayerControllerB>(@this.mimicPlayer.mimickingPlayer, StartOfRound.Instance.localPlayerController))
			{
				debug.Invoke("Before getRecording.");
				OptionT<FSharpAsync<FSharpOption<string>>> val = OptionT<FSharpAsync<FSharpOption<string>>>.NewOptionT(Mirage.Domain.Audio.Recording.getRecording(@this.recordingManager));
				Bind val2 = null;
				OptionT<FSharpAsync<FSharpOption<Unit>>> val3 = default(OptionT<FSharpAsync<FSharpOption<Unit>>>);
				FSharpAsync<FSharpOption<string>> item = val.Item;
				FSharpFunc<FSharpOption<string>, FSharpAsync<FSharpOption<Unit>>> val4 = new mimicVoice@40-11(debug, @this);
				Bind val5 = null;
				FSharpAsync<FSharpOption<Unit>> val6 = null;
				return OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(Bind.op_GreaterGreaterEquals<FSharpOption<string>, FSharpOption<Unit>>(item, val4));
			}
			return FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, Unit>.InvokeFast<OptionT<FSharpAsync<FSharpOption<Unit>>>>((FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>>)mimicVoice@35-13.@_instance, new Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>(null, default(OptionT<FSharpAsync<FSharpOption<Unit>>>)), (Unit)null);
		}

		[CompilerGenerated]
		internal static OptionT<FSharpAsync<FSharpOption<Unit>>> catchHandler@1-3(Exception error)
		{
			//IL_0037: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			Mirage.Domain.Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, Exception>("Error occurred while mimicking voice: %P()", new object[1] { error }, (Type[])null)));
			return FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, Unit>.InvokeFast<OptionT<FSharpAsync<FSharpOption<Unit>>>>((FSharpFunc<Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>, FSharpFunc<Unit, OptionT<FSharpAsync<FSharpOption<Unit>>>>>)mimicVoice@43-17.@_instance, new Tuple<Return, OptionT<FSharpAsync<FSharpOption<Unit>>>>(null, default(OptionT<FSharpAsync<FSharpOption<Unit>>>)), (Unit)null);
		}

		[CompilerGenerated]
		internal static OptionT<FSharpAsync<FSharpOption<Unit>>> x@1(MimicVoice @this, FSharpFunc<string, Unit> debug, Unit unitVar)
		{
			//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_002c: 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_0034: 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)
			Default1 val = null;
			Delay val2 = null;
			FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>> val3 = new mimicVoice@34-16(debug, @this);
			Delay val4 = null;
			Delay val5 = null;
			OptionT<FSharpAsync<FSharpOption<Unit>>> val6 = OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<FSharpOption<Unit>>(val3));
			TryWith val7 = null;
			OptionT<FSharpAsync<FSharpOption<Unit>>> val8 = default(OptionT<FSharpAsync<FSharpOption<Unit>>>);
			val = (Default1)(object)val7;
			FSharpAsync<FSharpOption<Unit>> item = val6.Item;
			FSharpFunc<Exception, FSharpAsync<FSharpOption<Unit>>> @_instance;
			@_instance = mimicVoice@34-20.@_instance;
			TryWith val9 = null;
			val3 = new mimicVoice@34-21(item);
			FSharpAsync<FSharpOption<Unit>> val10 = null;
			return OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(TryWith.TryWith<FSharpOption<Unit>, False>(val3, @_instance, val9, False.False));
		}

		internal static FSharpAsync<Unit> mimicVoice@32(MimicVoice @this, FSharpFunc<string, Unit> debug)
		{
			//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)
			FSharpFunc<FSharpOption<Unit>, Unit> @_instance;
			@_instance = mimicVoice@33-1.@_instance;
			FSharpFunc<FSharpAsync<FSharpOption<Unit>>, FSharpAsync<Unit>> val = new mimicVoice@33-2(@_instance);
			MonadFxBuilder<OptionT<FSharpAsync<FSharpOption<Unit>>>> val2 = new MonadFxBuilder<OptionT<FSharpAsync<FSharpOption<Unit>>>>();
			Default1 val3 = null;
			Delay val4 = null;
			FSharpFunc<Unit, FSharpAsync<FSharpOption<Unit>>> val5 = new mimicVoice@33-22(debug, @this);
			Delay val6 = null;
			Delay val7 = null;
			return val.Invoke(OptionT<FSharpAsync<FSharpOption<Unit>>>.NewOptionT(ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<FSharpOption<Unit>>(val5)).Item);
		}

		internal static FSharpFunc<a, Unit> debug@49<a>()
		{
			return debug@50-1<a>.@_instance;
		}
	}
}
namespace <StartupCode$Mirage>.$Mirage.Unity
{
	internal static class MirageVoice
	{
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		internal static readonly Random random@20;

		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		[CompilerGenerated]
		[DebuggerNonUserCode]
		internal static int init@;

		static MirageVoice()
		{
			random@20 = new Random();
		}
	}
}
namespace Mirage.Unity
{
	[CompilationMapping(/*Could not decode attribute arguments.*/)]
	public static class MimicPlayer
	{
		[Serializable]
		[AllowNullLiteral]
		[CompilationMapping(/*Could not decode attribute arguments.*/)]
		public class MimicPlayer : NetworkBehaviour
		{
			internal FSharpEvent<Guid> onSetMimicId;

			internal Random random;

			internal EnemyAI enemyAI;

			internal Guid mimicId;

			internal PlayerControllerB mimickingPlayer;

			public PlayerControllerB MimickingPlayer => mimickingPlayer;

			public Guid MimicId => mimicId;

			[CLIEvent]
			public event FSharpHandler<Guid> OnSetMimicId
			{
				add
				{
					((IDelegateEvent<FSharpHandler<Guid>>)(object)onSetMimicId.Publish).AddHandler(value);
				}
				remove
				{
					((IDelegateEvent<FSharpHandler<Guid>>)(object)onSetMimicId.Publish).RemoveHandler(value);
				}
			}

			public MimicPlayer()
			{
				onSetMimicId = new FSharpEvent<Guid>();
				random = new Random();
				enemyAI = null;
				mimicId = Guid.Empty;
				mimickingPlayer = null;
			}

			public void Awake()
			{
				enemyAI = ((Component)this).GetComponent<EnemyAI>();
			}

			public void Start()
			{
				object obj = enemyAI;
				if (!(obj is MaskedPlayerEnemy))
				{
					StartMimicking();
				}
			}

			public void StartMimicking()
			{
				if (((NetworkBehaviour)this).IsHost)
				{
					mimicId = Guid.NewGuid();
					MaskedPlayerEnemy component = ((Component)this).GetComponent<MaskedPlayerEnemy>();
					object obj = enemyAI;
					object obj2;
					if (obj is MaskedPlayerEnemy && SetModule.Contains<string>(((EnemyAI)component).enemyType.enemyName, Mirage.Domain.Config.getConfig().enemies@))
					{
						obj2 = ((component.mimickingPlayer != null) ? FSharpOption<PlayerControllerB>.Some(component.mimickingPlayer) : FSharpOption<PlayerControllerB>.Some(randomPlayer()));
					}
					else
					{
						obj = enemyAI;
						obj2 = ((obj is DressGirlAI || !SetModule.Contains<string>(enemyAI.enemyType.enemyName, Mirage.Domain.Config.getConfig().enemies@)) ? null : FSharpOption<PlayerControllerB>.Some(randomPlayer()));
					}
					FSharpOption<PlayerControllerB> val = (FSharpOption<PlayerControllerB>)obj2;
					FSharpFunc<PlayerControllerB, Unit> val2 = new StartMimicking@71(this);
					Iterate val3 = null;
					Iterate.Iterate<PlayerControllerB>(val, val2);
				}
			}

			public void MimicPlayer(int playerId)
			{
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Expected O, but got Unknown
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerId];
				logMimic(PrintfModule.PrintFormatToStringThen<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string,