[
  {
    "path": ".gitattributes",
    "content": "* text eol=lf\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: [chizaruu]\npatreon: thesleepykoala # Replace with a single Patreon username\nko_fi: thesleepykoala # Replace with a single Ko-fi username\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: 🐞 Bug\ndescription: File a bug/issue\ntitle: \"<title>\"\nlabels: [bug]\nbody:\n- type: textarea\n  attributes:\n    label: Current Behavior\n    description: A description of what you're experiencing.\n  validations:\n    required: false\n- type: textarea\n  attributes:\n    label: Reproduction / Steps To Reproduce\n    description: Stackblitz/Link to a repository with steps to reproduce the behavior.\n    placeholder: |\n      As you can see in this code example/Stackblitz link/repostitory\n      1. Using this component...\n      2. With these properties...\n      3. Click '...'\n      4. See error...\n  validations:\n    required: false\n- type: markdown\n  attributes:\n    value: |\n      Bug Reports with a repository with a full reproduction or a Stackblitz can be anwswered far quicker, so please consider including as much information as possible to let us help you quicker!\n- type: textarea\n  attributes:\n    label: Anything else?\n    description: |\n      Links? References? Anything that will give us more context about the issue you are encountering!\n      Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.\n  validations:\n    required: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: true\ncontact_links:\n  - name: Get support on Discord\n    url: https://discord.gg/tZmsjTFEBx\n    about: Get help from the maintainers on Discord\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: 🛠️ Request New Feature\ndescription: Let us know what we should add.\nlabels: ['feature request']\nbody:\n  - type: textarea\n    id: description\n    attributes:\n      label: Describe what feature you'd like. Pseudo-code, mockups, or screenshots of similar solutions are encouraged!\n  - type: dropdown\n    id: category\n    attributes:\n      label: What type of pull request would this be?\n      options:\n        - 'New Feature'\n        - 'Enhancement'\n        - 'Guide'\n        - 'Docs'\n        - 'Other'\n  - type: textarea\n    id: references\n    attributes:\n      label: Any links to similar examples or other references we should review? \n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\non:\n    push:\n        branches:\n            - default\njobs:\n    split-upm:\n        name: split upm branch\n        runs-on: ubuntu-latest\n        steps:\n            - name: Check out code\n              uses: actions/checkout@v3 # specify the version to v3\n              with:\n                  fetch-depth: 0\n            - name: split upm branch\n              run: |\n                  git subtree split -P \"$PKG_ROOT\" -b upm\n                  git push -u origin upm\n              env:\n                  PKG_ROOT: com.tsk.ide.vscode\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n.editorconfig\n\n/TestAnalyzer/bin/\n/TestAnalyzer/obj/\n\n/projects/**/.vscode/*\n/projects/**/Builds\n/projects/**/bin\n/projects/**/Library\n/projects/**/Logs\n/projects/**/obj\n/projects/**/Temp\n\n*.csproj\n*.sln\n*.code-workspace\n\nsettings.json\n\n*.dwlt\n*.dll\n*.dll.meta\n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Analyzer.meta",
    "content": "fileFormatVersion: 2\nguid: 83a7d9ae72b00d244b11062f1befd3a3\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef",
    "content": "{\n    \"name\": \"InAssetFolder\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": [],\n    \"noEngineReferences\": false\n}"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 02a83d3e11a5a9745b46ca562b00be0e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Custom Asmdef/TimTam.cs",
    "content": "using System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\npublic class TimTam : MonoBehaviour\n{\n    // Start is called before the first frame update\n    void Start()\n    {\n        \n    }\n\n    // Update is called once per frame\n    void Update()\n    {\n        \n    }\n}\n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Custom Asmdef/TimTam.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8569e12c481432146a309f64fab7c80c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Custom Asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 051e38478c4283c4ea841b4cd457dae4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Editor/CSProjAssetTests.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing NUnit.Framework;\nusing UnityEditor;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace VSCodeEditor.Runtime_spec.CSProject\n{\n    [TestFixture]\n    [Serializable]\n    public abstract class CleanupTest\n    {\n        [SerializeField]\n        protected IGenerator m_ProjectGeneration;\n\n        [SerializeField]\n        readonly List<string> m_GeneratedFiles = new();\n\n        [SerializeField]\n        readonly List<string> m_DirectoriesToDelete = new();\n\n        [SerializeField]\n        protected string m_CsProjPath;\n\n        [SerializeField]\n        protected DateTime m_LastWritten;\n\n        protected const string k_EmptyCSharpScript =\n            @\"\nusing UnityEngine;\npublic class SimpleCSharpScript : MonoBehaviour\n{\n  void Start()\n  {\n  }\n}\";\n\n        [SetUp]\n        public void SetUp()\n        {\n            var projectDirectory = Directory.GetParent(Application.dataPath).FullName;\n            m_ProjectGeneration = new ProjectGeneration(projectDirectory);\n        }\n\n        [UnityTearDown]\n        protected virtual IEnumerator TearDown()\n        {\n            foreach (var pathToDelete in m_GeneratedFiles)\n            {\n                if (File.Exists(pathToDelete))\n                {\n                    File.Delete(pathToDelete);\n                }\n\n                if (File.Exists(pathToDelete + \".meta\"))\n                {\n                    File.Delete(pathToDelete + \".meta\");\n                }\n            }\n\n            foreach (var directoryToDelete in m_DirectoriesToDelete)\n            {\n                if (Directory.Exists(directoryToDelete))\n                {\n                    Directory.Delete(directoryToDelete, true);\n                    File.Delete(directoryToDelete + \".meta\");\n                }\n            }\n\n            m_GeneratedFiles.Clear();\n            m_DirectoriesToDelete.Clear();\n\n            yield return new RecompileScripts(false);\n        }\n\n        protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content)\n        {\n            var targetFile = Path.Combine(assetPath, fileName);\n            m_GeneratedFiles.Add(targetFile);\n            File.WriteAllText(targetFile, content);\n        }\n\n        protected void CreateFolder(string path)\n        {\n            m_DirectoriesToDelete.Add(path);\n            Directory.CreateDirectory(path);\n        }\n    }\n\n    public class BuildTarget : CleanupTest\n    {\n        [SerializeField]\n        UnityEditor.BuildTarget m_Original;\n\n        protected override IEnumerator TearDown()\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                m_Original\n            );\n            return base.TearDown();\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges(\n            UnityEditor.BuildTarget platformTarget,\n            string platformDefine,\n            UnityEditor.BuildTarget changeTarget,\n            string changeDefine,\n            Action action\n        )\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                platformTarget\n            );\n            CopyScriptToAssetsFolder(\n                Application.dataPath,\n                \"SimpleCSharpScript.cs\",\n                k_EmptyCSharpScript\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            var dir = Directory.GetParent(Application.dataPath).FullName;\n            m_CsProjPath = Path.Combine(dir, \"Assembly-CSharp.csproj\");\n\n            AssertProjectContainsDefine(m_CsProjPath, platformDefine);\n\n            action();\n\n            m_LastWritten = DateTime.Now.AddSeconds(-1);\n            File.SetLastWriteTime(m_CsProjPath, m_LastWritten);\n\n            //switch target to another one than the standalone target for the current platform\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                changeTarget\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten);\n\n            AssertProjectContainsDefine(m_CsProjPath, changeDefine);\n            yield return null;\n        }\n\n        static void AssertProjectContainsDefine(string csProjPath, string expectedDefine)\n        {\n            var content = File.ReadAllText(csProjPath);\n            Assert.IsTrue(\n                Regex.IsMatch(content, $\"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>\")\n            );\n        }\n\n        delegate bool Condition();\n\n        static void WaitForCondition(Condition condition)\n        {\n            var started = DateTime.Now;\n            while (!condition())\n            {\n                if (DateTime.Now - started > k_Timeout)\n                    throw new TimeoutException(\n                        $\"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds\"\n                    );\n                Thread.Sleep(10);\n            }\n        }\n\n        static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5);\n    }\n}\n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Editor/CSProjAssetTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 09b6f746cf9797a4a97e259d45a38ec1\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Editor/RecompileScripts.cs",
    "content": "using System;\nusing System.Collections;\nusing UnityEditor;\nusing UnityEngine.TestTools;\n\npublic class RecompileScripts : IEditModeTestYieldInstruction\n{\n    public RecompileScripts()\n        : this(true) { }\n\n    public RecompileScripts(bool expectScriptCompilation)\n        : this(expectScriptCompilation, true) { }\n\n    public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess)\n    {\n        ExpectScriptCompilation = expectScriptCompilation;\n        ExpectScriptCompilationSuccess = expectScriptCompilationSuccess;\n        ExpectDomainReload = true;\n    }\n\n    public bool ExpectDomainReload { get; }\n    public bool ExpectedPlaymodeState { get; }\n    public bool ExpectScriptCompilation { get; }\n    public bool ExpectScriptCompilationSuccess { get; }\n    public static RecompileScripts Current { get; private set; }\n\n    public IEnumerator Perform()\n    {\n        Current = this;\n\n        AssetDatabase.Refresh();\n\n        if (ExpectScriptCompilation && !EditorApplication.isCompiling)\n        {\n            Current = null;\n            throw new Exception(\"Editor does not need to recompile scripts\");\n        }\n\n        EditorApplication.UnlockReloadAssemblies();\n\n        while (EditorApplication.isCompiling)\n        {\n            yield return null;\n        }\n\n        Current = null;\n\n        if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed)\n        {\n            EditorApplication.LockReloadAssemblies();\n            throw new Exception(\"Script compilation failed\");\n        }\n    }\n}\n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Editor/RecompileScripts.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 35e5ed6756833644c83c24382f01236b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 8a06cae000d3e064aa6a3530ef8bbabc\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/KoalaExtensionTest.koala",
    "content": ""
  },
  {
    "path": "Projects/2021.3 LTS/Assets/KoalaExtensionTest.koala.meta",
    "content": "fileFormatVersion: 2\nguid: 9972cb3bb6a98ab469a9399f8bc337c6\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Scenes/SampleScene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 705507994}\n  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 1\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_AtlasSize: 1024\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 500\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &705507993\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 705507995}\n  - component: {fileID: 705507994}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &705507994\nLight:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: -1\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.05\n    m_NormalBias: 0.4\n    m_NearPlane: 0.2\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_LightShadowCasterMode: 0\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &705507995\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &963194225\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 963194228}\n  - component: {fileID: 963194227}\n  - component: {fileID: 963194226}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &963194226\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n--- !u!20 &963194227\nCamera:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}\n  m_projectionMatrixMode: 1\n  m_SensorSize: {x: 36, y: 24}\n  m_LensShift: {x: 0, y: 0}\n  m_GateFitMode: 2\n  m_FocalLength: 50\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 1\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &963194228\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 1, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Scenes/SampleScene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 9fc0d4010bbf28b4594072e72b8655ab\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Scenes/SampleSceneSettings.lighting",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!850595691 &4890085278179872738\nLightingSettings:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_Name: SampleSceneSettings\n  serializedVersion: 2\n  m_GIWorkflowMode: 0\n  m_EnableBakedLightmaps: 1\n  m_EnableRealtimeLightmaps: 1\n  m_RealtimeEnvironmentLighting: 1\n  m_BounceScale: 1\n  m_AlbedoBoost: 1\n  m_IndirectOutputScale: 1\n  m_UsingShadowmask: 1\n  m_BakeBackend: 1\n  m_LightmapMaxSize: 1024\n  m_BakeResolution: 40\n  m_Padding: 2\n  m_TextureCompression: 1\n  m_AO: 0\n  m_AOMaxDistance: 1\n  m_CompAOExponent: 1\n  m_CompAOExponentDirect: 0\n  m_ExtractAO: 0\n  m_MixedBakeMode: 2\n  m_LightmapsBakeMode: 1\n  m_FilterMode: 1\n  m_LightmapParameters: {fileID: 0}\n  m_ExportTrainingData: 0\n  m_TrainingDataDestination: TrainingData\n  m_RealtimeResolution: 2\n  m_ForceWhiteAlbedo: 0\n  m_ForceUpdates: 0\n  m_FinalGather: 0\n  m_FinalGatherRayCount: 256\n  m_FinalGatherFiltering: 1\n  m_PVRCulling: 1\n  m_PVRSampling: 1\n  m_PVRDirectSampleCount: 32\n  m_PVRSampleCount: 500\n  m_PVREnvironmentSampleCount: 500\n  m_PVREnvironmentReferencePointCount: 2048\n  m_LightProbeSampleCountMultiplier: 4\n  m_PVRBounces: 2\n  m_PVRRussianRouletteStartBounce: 2\n  m_PVREnvironmentMIS: 0\n  m_PVRFilteringMode: 2\n  m_PVRDenoiserTypeDirect: 0\n  m_PVRDenoiserTypeIndirect: 0\n  m_PVRDenoiserTypeAO: 0\n  m_PVRFilterTypeDirect: 0\n  m_PVRFilterTypeIndirect: 0\n  m_PVRFilterTypeAO: 0\n  m_PVRFilteringGaussRadiusDirect: 1\n  m_PVRFilteringGaussRadiusIndirect: 5\n  m_PVRFilteringGaussRadiusAO: 2\n  m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n  m_PVRFilteringAtrousPositionSigmaIndirect: 2\n  m_PVRFilteringAtrousPositionSigmaAO: 1\n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Scenes/SampleSceneSettings.lighting.meta",
    "content": "fileFormatVersion: 2\nguid: a0eb4567ffade2f47b9fc6e006e4ce91\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Scenes.meta",
    "content": "fileFormatVersion: 2\nguid: 2c4ecd2c3fea48442bfed0ebc5181951\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Test.cs",
    "content": "using UnityEngine;\n\npublic class Test : MonoBehaviour\n{\n    void Start()\n    {\n        TestCode.TestClass.TestMethod();\n    }\n}"
  },
  {
    "path": "Projects/2021.3 LTS/Assets/Test.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8dc025fb3786c0b41a0bb4360be46b9a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2021.3 LTS/Packages/manifest.json",
    "content": "{\n  \"disableProjectUpdate\": true,\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": \"file:../../../com.tsk.ide.vscode\",\n    \"com.tsk.ide.vscodetests\": \"file:../../../com.tsk.ide.vscodetests\",\n    \"com.unity.test-framework\": \"1.3.3\"\n  }\n}\n"
  },
  {
    "path": "Projects/2021.3 LTS/Packages/packages-lock.json",
    "content": "{\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": {\n      \"version\": \"file:../../../com.tsk.ide.vscode\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {}\n    },\n    \"com.tsk.ide.vscodetests\": {\n      \"version\": \"file:../../../com.tsk.ide.vscodetests\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {\n        \"nuget.moq\": \"1.0.0\"\n      }\n    },\n    \"com.unity.ext.nunit\": {\n      \"version\": \"2.0.3\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.test-framework\": {\n      \"version\": \"1.3.3\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.ext.nunit\": \"2.0.3\",\n        \"com.unity.modules.imgui\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.castle-core\": {\n      \"version\": \"1.0.1\",\n      \"depth\": 2,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.moq\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"nuget.castle-core\": \"1.0.1\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.modules.imgui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.jsonserialize\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    }\n  }\n}\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/AudioManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  m_Volume: 1\n  Rolloff Scale: 1\n  Doppler Factor: 1\n  Default Speaker Mode: 2\n  m_SampleRate: 0\n  m_DSPBufferSize: 1024\n  m_VirtualVoiceCount: 512\n  m_RealVoiceCount: 32\n  m_SpatializerPlugin: \n  m_AmbisonicDecoderPlugin: \n  m_DisableAudio: 0\n  m_VirtualizeEffects: 1\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/ClusterInputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/DynamicsManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_Gravity: {x: 0, y: -9.81, z: 0}\n  m_DefaultMaterial: {fileID: 0}\n  m_BounceThreshold: 2\n  m_SleepThreshold: 0.005\n  m_DefaultContactOffset: 0.01\n  m_DefaultSolverIterations: 6\n  m_DefaultSolverVelocityIterations: 1\n  m_QueriesHitBackfaces: 0\n  m_QueriesHitTriggers: 1\n  m_EnableAdaptiveForce: 0\n  m_ClothInterCollisionDistance: 0\n  m_ClothInterCollisionStiffness: 0\n  m_ContactsGeneration: 1\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n  m_AutoSimulation: 1\n  m_AutoSyncTransforms: 0\n  m_ReuseCollisionCallbacks: 0\n  m_ClothInterCollisionSettingsToggle: 0\n  m_ContactPairsMode: 0\n  m_BroadphaseType: 0\n  m_WorldBounds:\n    m_Center: {x: 0, y: 0, z: 0}\n    m_Extent: {x: 250, y: 250, z: 250}\n  m_WorldSubdivisions: 8\n  m_FrictionType: 0\n  m_EnableEnhancedDeterminism: 0\n  m_EnableUnifiedHeightmaps: 1\n  m_DefaultMaxAngluarSpeed: 7\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/EditorBuildSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Scenes: []\n  m_configObjects: {}\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/EditorSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 7\n  m_ExternalVersionControlSupport: Hidden Meta Files\n  m_SerializationMode: 2\n  m_LineEndingsForNewScripts: 2\n  m_DefaultBehaviorMode: 0\n  m_PrefabRegularEnvironment: {fileID: 0}\n  m_PrefabUIEnvironment: {fileID: 0}\n  m_SpritePackerMode: 0\n  m_SpritePackerPaddingPower: 1\n  m_EtcTextureCompressorBehavior: 1\n  m_EtcTextureFastCompressor: 1\n  m_EtcTextureNormalCompressor: 2\n  m_EtcTextureBestCompressor: 4\n  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp\n  m_ProjectGenerationRootNamespace: \n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n  m_EnableTextureStreamingInEditMode: 0\n  m_EnableTextureStreamingInPlayMode: 1\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/GraphicsSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 12\n  m_Deferred:\n    m_Mode: 1\n    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}\n  m_DeferredReflections:\n    m_Mode: 1\n    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}\n  m_ScreenSpaceShadows:\n    m_Mode: 1\n    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}\n  m_LegacyDeferred:\n    m_Mode: 1\n    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}\n  m_DepthNormals:\n    m_Mode: 1\n    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}\n  m_MotionVectors:\n    m_Mode: 1\n    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}\n  m_LightHalo:\n    m_Mode: 1\n    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}\n  m_LensFlare:\n    m_Mode: 1\n    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}\n  m_AlwaysIncludedShaders:\n  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}\n  m_PreloadedShaders: []\n  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,\n    type: 0}\n  m_CustomRenderPipeline: {fileID: 0}\n  m_TransparencySortMode: 0\n  m_TransparencySortAxis: {x: 0, y: 0, z: 1}\n  m_DefaultRenderingPath: 1\n  m_DefaultMobileRenderingPath: 1\n  m_TierSettings: []\n  m_LightmapStripping: 0\n  m_FogStripping: 0\n  m_InstancingStripping: 0\n  m_LightmapKeepPlain: 1\n  m_LightmapKeepDirCombined: 1\n  m_LightmapKeepDynamicPlain: 1\n  m_LightmapKeepDynamicDirCombined: 1\n  m_LightmapKeepShadowMask: 1\n  m_LightmapKeepSubtractive: 1\n  m_FogKeepLinear: 1\n  m_FogKeepExp: 1\n  m_FogKeepExp2: 1\n  m_AlbedoSwatchInfos: []\n  m_LightsUseLinearIntensity: 0\n  m_LightsUseColorTemperature: 0\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/InputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Axes:\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: left\n    positiveButton: right\n    altNegativeButton: a\n    altPositiveButton: d\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: down\n    positiveButton: up\n    altNegativeButton: s\n    altPositiveButton: w\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left ctrl\n    altNegativeButton: \n    altPositiveButton: mouse 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left alt\n    altNegativeButton: \n    altPositiveButton: mouse 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left shift\n    altNegativeButton: \n    altPositiveButton: mouse 2\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: space\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse X\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse Y\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse ScrollWheel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 2\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 0\n    type: 2\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 1\n    type: 2\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 0\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 1\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 2\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 3\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: return\n    altNegativeButton: \n    altPositiveButton: joystick button 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: enter\n    altNegativeButton: \n    altPositiveButton: space\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Cancel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: escape\n    altNegativeButton: \n    altPositiveButton: joystick button 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/MemorySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!387306366 &1\nMemorySettings:\n  m_ObjectHideFlags: 0\n  m_EditorMemorySettings:\n    m_MainAllocatorBlockSize: -1\n    m_ThreadAllocatorBlockSize: -1\n    m_MainGfxBlockSize: -1\n    m_ThreadGfxBlockSize: -1\n    m_CacheBlockSize: -1\n    m_TypetreeBlockSize: -1\n    m_ProfilerBlockSize: -1\n    m_ProfilerEditorBlockSize: -1\n    m_BucketAllocatorGranularity: -1\n    m_BucketAllocatorBucketsCount: -1\n    m_BucketAllocatorBlockSize: -1\n    m_BucketAllocatorBlockCount: -1\n    m_ProfilerBucketAllocatorGranularity: -1\n    m_ProfilerBucketAllocatorBucketsCount: -1\n    m_ProfilerBucketAllocatorBlockSize: -1\n    m_ProfilerBucketAllocatorBlockCount: -1\n    m_TempAllocatorSizeMain: -1\n    m_JobTempAllocatorBlockSize: -1\n    m_BackgroundJobTempAllocatorBlockSize: -1\n    m_JobTempAllocatorReducedBlockSize: -1\n    m_TempAllocatorSizeGIBakingWorker: -1\n    m_TempAllocatorSizeNavMeshWorker: -1\n    m_TempAllocatorSizeAudioWorker: -1\n    m_TempAllocatorSizeCloudWorker: -1\n    m_TempAllocatorSizeGfx: -1\n    m_TempAllocatorSizeJobWorker: -1\n    m_TempAllocatorSizeBackgroundWorker: -1\n    m_TempAllocatorSizePreloadManager: -1\n  m_PlatformMemorySettings: {}\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/NavMeshAreas.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  areas:\n  - name: Walkable\n    cost: 1\n  - name: Not Walkable\n    cost: 1\n  - name: Jump\n    cost: 2\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  m_LastAgentTypeID: -887442657\n  m_Settings:\n  - serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.75\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_SettingNames:\n  - Humanoid\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/PackageManagerSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_EnablePreReleasePackages: 0\n  m_EnablePackageDependencies: 0\n  m_AdvancedSettingsExpanded: 1\n  m_ScopedRegistriesSettingsExpanded: 1\n  m_SeeAllPackageVersions: 0\n  oneTimeWarningShown: 0\n  m_Registries:\n  - m_Id: main\n    m_Name: \n    m_Url: https://packages.unity.com\n    m_Scopes: []\n    m_IsDefault: 1\n    m_Capabilities: 7\n    m_ConfigSource: 0\n  m_UserSelectedRegistryName: \n  m_UserAddingNewScopedRegistry: 0\n  m_RegistryInfoDraft:\n    m_Modified: 0\n    m_ErrorMessage: \n    m_UserModificationsInstanceId: -856\n    m_OriginalInstanceId: -858\n  m_LoadAssets: 0\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/Physics2DSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_Gravity: {x: 0, y: -9.81}\n  m_DefaultMaterial: {fileID: 0}\n  m_VelocityIterations: 8\n  m_PositionIterations: 3\n  m_VelocityThreshold: 1\n  m_MaxLinearCorrection: 0.2\n  m_MaxAngularCorrection: 8\n  m_MaxTranslationSpeed: 100\n  m_MaxRotationSpeed: 360\n  m_BaumgarteScale: 0.2\n  m_BaumgarteTimeOfImpactScale: 0.75\n  m_TimeToSleep: 0.5\n  m_LinearSleepTolerance: 0.01\n  m_AngularSleepTolerance: 2\n  m_DefaultContactOffset: 0.01\n  m_JobOptions:\n    serializedVersion: 2\n    useMultithreading: 0\n    useConsistencySorting: 0\n    m_InterpolationPosesPerJob: 100\n    m_NewContactsPerJob: 30\n    m_CollideContactsPerJob: 100\n    m_ClearFlagsPerJob: 200\n    m_ClearBodyForcesPerJob: 200\n    m_SyncDiscreteFixturesPerJob: 50\n    m_SyncContinuousFixturesPerJob: 50\n    m_FindNearestContactsPerJob: 100\n    m_UpdateTriggerContactsPerJob: 100\n    m_IslandSolverCostThreshold: 100\n    m_IslandSolverBodyCostScale: 1\n    m_IslandSolverContactCostScale: 10\n    m_IslandSolverJointCostScale: 10\n    m_IslandSolverBodiesPerJob: 50\n    m_IslandSolverContactsPerJob: 50\n  m_AutoSimulation: 1\n  m_QueriesHitTriggers: 1\n  m_QueriesStartInColliders: 1\n  m_CallbacksOnDisable: 1\n  m_ReuseCollisionCallbacks: 0\n  m_AutoSyncTransforms: 0\n  m_AlwaysShowColliders: 0\n  m_ShowColliderSleep: 1\n  m_ShowColliderContacts: 0\n  m_ShowColliderAABB: 0\n  m_ContactArrowScale: 0.2\n  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}\n  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}\n  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}\n  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/PresetManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  m_DefaultList: []\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/ProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 23\n  productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 4\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: DefaultCompany\n  productName: TestVSCodePackage\n  defaultCursor: {fileID: 0}\n  cursorHotspot: {x: 0, y: 0}\n  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}\n  m_ShowUnitySplashScreen: 1\n  m_ShowUnitySplashLogo: 1\n  m_SplashScreenOverlayOpacity: 1\n  m_SplashScreenAnimation: 1\n  m_SplashScreenLogoStyle: 1\n  m_SplashScreenDrawMode: 0\n  m_SplashScreenBackgroundAnimationZoom: 1\n  m_SplashScreenLogoAnimationZoom: 1\n  m_SplashScreenBackgroundLandscapeAspect: 1\n  m_SplashScreenBackgroundPortraitAspect: 1\n  m_SplashScreenBackgroundLandscapeUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenBackgroundPortraitUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenLogos: []\n  m_VirtualRealitySplashScreen: {fileID: 0}\n  m_HolographicTrackingLossScreen: {fileID: 0}\n  defaultScreenWidth: 1024\n  defaultScreenHeight: 768\n  defaultScreenWidthWeb: 960\n  defaultScreenHeightWeb: 600\n  m_StereoRenderingPath: 0\n  m_ActiveColorSpace: 0\n  m_MTRendering: 1\n  mipStripping: 0\n  numberOfMipsStripped: 0\n  m_StackTraceTypes: 010000000100000001000000010000000100000001000000\n  iosShowActivityIndicatorOnLoading: -1\n  androidShowActivityIndicatorOnLoading: -1\n  iosUseCustomAppBackgroundBehavior: 0\n  iosAllowHTTPDownload: 1\n  allowedAutorotateToPortrait: 1\n  allowedAutorotateToPortraitUpsideDown: 1\n  allowedAutorotateToLandscapeRight: 1\n  allowedAutorotateToLandscapeLeft: 1\n  useOSAutorotation: 1\n  use32BitDisplayBuffer: 1\n  preserveFramebufferAlpha: 0\n  disableDepthAndStencilBuffers: 0\n  androidStartInFullscreen: 1\n  androidRenderOutsideSafeArea: 0\n  androidUseSwappy: 0\n  androidBlitType: 0\n  androidResizableWindow: 0\n  androidDefaultWindowWidth: 1920\n  androidDefaultWindowHeight: 1080\n  androidMinimumWindowWidth: 400\n  androidMinimumWindowHeight: 300\n  androidFullscreenMode: 1\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 1\n  captureSingleScreen: 0\n  muteOtherAudioSources: 0\n  Prepare IOS For Recording: 0\n  Force IOS Speakers When Recording: 0\n  deferSystemGesturesMode: 0\n  hideHomeButton: 0\n  submitAnalytics: 1\n  usePlayerLog: 1\n  bakeCollisionMeshes: 0\n  forceSingleInstance: 0\n  useFlipModelSwapchain: 1\n  resizableWindow: 0\n  useMacAppStoreValidation: 0\n  macAppStoreCategory: public.app-category.games\n  gpuSkinning: 1\n  xboxPIXTextureCapture: 0\n  xboxEnableAvatar: 0\n  xboxEnableKinect: 0\n  xboxEnableKinectAutoTracking: 0\n  xboxEnableFitness: 0\n  visibleInBackground: 1\n  allowFullscreenSwitch: 1\n  fullscreenMode: 1\n  xboxSpeechDB: 0\n  xboxEnableHeadOrientation: 0\n  xboxEnableGuest: 0\n  xboxEnablePIXSampling: 0\n  metalFramebufferOnly: 0\n  xboxOneResolution: 0\n  xboxOneSResolution: 0\n  xboxOneXResolution: 3\n  xboxOneMonoLoggingLevel: 0\n  xboxOneLoggingLevel: 1\n  xboxOneDisableEsram: 0\n  xboxOneEnableTypeOptimization: 0\n  xboxOnePresentImmediateThreshold: 0\n  switchQueueCommandMemory: 0\n  switchQueueControlMemory: 0\n  switchQueueComputeMemory: 262144\n  switchNVNShaderPoolsGranularity: 33554432\n  switchNVNDefaultPoolsGranularity: 16777216\n  switchNVNOtherPoolsGranularity: 16777216\n  switchNVNMaxPublicTextureIDCount: 0\n  switchNVNMaxPublicSamplerIDCount: 0\n  stadiaPresentMode: 0\n  stadiaTargetFramerate: 0\n  vulkanNumSwapchainBuffers: 3\n  vulkanEnableSetSRGBWrite: 0\n  vulkanEnablePreTransform: 0\n  vulkanEnableLateAcquireNextImage: 0\n  vulkanEnableCommandBufferRecycling: 1\n  m_SupportedAspectRatios:\n    4:3: 1\n    5:4: 1\n    16:10: 1\n    16:9: 1\n    Others: 1\n  bundleVersion: 0.1\n  preloadedAssets: []\n  metroInputSource: 0\n  wsaTransparentSwapchain: 0\n  m_HolographicPauseOnTrackingLoss: 1\n  xboxOneDisableKinectGpuReservation: 0\n  xboxOneEnable7thCore: 0\n  vrSettings:\n    enable360StereoCapture: 0\n  isWsaHolographicRemotingEnabled: 0\n  enableFrameTimingStats: 0\n  enableOpenGLProfilerGPURecorders: 1\n  useHDRDisplay: 0\n  D3DHDRBitDepth: 0\n  m_ColorGamuts: 00000000\n  targetPixelDensity: 30\n  resolutionScalingMode: 0\n  resetResolutionOnWindowResize: 0\n  androidSupportedAspectRatio: 1\n  androidMaxAspectRatio: 2.1\n  applicationIdentifier:\n    Standalone: com.DefaultCompany.TestVSCodePackage\n  buildNumber:\n    Standalone: 0\n    iPhone: 0\n    tvOS: 0\n  overrideDefaultApplicationIdentifier: 0\n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 22\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 0\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  APKExpansionFiles: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 1\n  VertexChannelCompressionMask: 4054\n  iPhoneSdkVersion: 988\n  iOSTargetOSVersionString: 11.0\n  tvOSSdkVersion: 0\n  tvOSRequireExtendedGameController: 0\n  tvOSTargetOSVersionString: 11.0\n  uIPrerenderedIcon: 0\n  uIRequiresPersistentWiFi: 0\n  uIRequiresFullScreen: 1\n  uIStatusBarHidden: 1\n  uIExitOnSuspend: 0\n  uIStatusBarStyle: 0\n  appleTVSplashScreen: {fileID: 0}\n  appleTVSplashScreen2x: {fileID: 0}\n  tvOSSmallIconLayers: []\n  tvOSSmallIconLayers2x: []\n  tvOSLargeIconLayers: []\n  tvOSLargeIconLayers2x: []\n  tvOSTopShelfImageLayers: []\n  tvOSTopShelfImageLayers2x: []\n  tvOSTopShelfImageWideLayers: []\n  tvOSTopShelfImageWideLayers2x: []\n  iOSLaunchScreenType: 0\n  iOSLaunchScreenPortrait: {fileID: 0}\n  iOSLaunchScreenLandscape: {fileID: 0}\n  iOSLaunchScreenBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreenFillPct: 100\n  iOSLaunchScreenSize: 100\n  iOSLaunchScreenCustomXibPath: \n  iOSLaunchScreeniPadType: 0\n  iOSLaunchScreeniPadImage: {fileID: 0}\n  iOSLaunchScreeniPadBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreeniPadFillPct: 100\n  iOSLaunchScreeniPadSize: 100\n  iOSLaunchScreeniPadCustomXibPath: \n  iOSLaunchScreenCustomStoryboardPath: \n  iOSLaunchScreeniPadCustomStoryboardPath: \n  iOSDeviceRequirements: []\n  iOSURLSchemes: []\n  macOSURLSchemes: []\n  iOSBackgroundModes: 0\n  iOSMetalForceHardShadows: 0\n  metalEditorSupport: 1\n  metalAPIValidation: 1\n  iOSRenderExtraFrameOnPause: 0\n  iosCopyPluginsCodeInsteadOfSymlink: 0\n  appleDeveloperTeamID: \n  iOSManualSigningProvisioningProfileID: \n  tvOSManualSigningProvisioningProfileID: \n  iOSManualSigningProvisioningProfileType: 0\n  tvOSManualSigningProvisioningProfileType: 0\n  appleEnableAutomaticSigning: 0\n  iOSRequireARKit: 0\n  iOSAutomaticallyDetectAndAddCapabilities: 1\n  appleEnableProMotion: 0\n  shaderPrecisionModel: 0\n  clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea\n  templatePackageId: com.unity.template.3d@1.0.8\n  templateDefaultScene: Assets/Scenes/SampleScene.unity\n  useCustomMainManifest: 0\n  useCustomLauncherManifest: 0\n  useCustomMainGradleTemplate: 0\n  useCustomLauncherGradleManifest: 0\n  useCustomBaseGradleTemplate: 0\n  useCustomGradlePropertiesTemplate: 0\n  useCustomProguardFile: 0\n  AndroidTargetArchitectures: 5\n  AndroidTargetDevices: 0\n  AndroidSplashScreenScale: 0\n  androidSplashScreen: {fileID: 0}\n  AndroidKeystoreName: '{inproject}: '\n  AndroidKeyaliasName: \n  AndroidBuildApkPerCpuArchitecture: 0\n  AndroidTVCompatibility: 0\n  AndroidIsGame: 1\n  AndroidEnableTango: 0\n  androidEnableBanner: 1\n  androidUseLowAccuracyLocation: 0\n  androidUseCustomKeystore: 0\n  m_AndroidBanners:\n  - width: 320\n    height: 180\n    banner: {fileID: 0}\n  androidGamepadSupportLevel: 0\n  chromeosInputEmulation: 1\n  AndroidMinifyWithR8: 0\n  AndroidMinifyRelease: 0\n  AndroidMinifyDebug: 0\n  AndroidValidateAppBundleSize: 1\n  AndroidAppBundleSizeToValidate: 100\n  m_BuildTargetIcons: []\n  m_BuildTargetPlatformIcons:\n  - m_BuildTarget: Android\n    m_Icons:\n    - m_Textures: []\n      m_Width: 432\n      m_Height: 432\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 324\n      m_Height: 324\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 216\n      m_Height: 216\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 162\n      m_Height: 162\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 108\n      m_Height: 108\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 81\n      m_Height: 81\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 0\n      m_SubKind: \n  m_BuildTargetBatching:\n  - m_BuildTarget: Standalone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: tvOS\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: Android\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: iPhone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: WebGL\n    m_StaticBatching: 0\n    m_DynamicBatching: 0\n  m_BuildTargetShaderSettings: []\n  m_BuildTargetGraphicsJobs:\n  - m_BuildTarget: WindowsStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MacStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LinuxStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AndroidPlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: iOSSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS5Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreXboxOneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreScarlettSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: Switch\n    m_GraphicsJobs: 0\n  - m_BuildTarget: WebGLSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MetroSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AppleTVSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: BJMSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LuminSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: CloudRendering\n    m_GraphicsJobs: 0\n  - m_BuildTarget: EmbeddedLinux\n    m_GraphicsJobs: 0\n  m_BuildTargetGraphicsJobMode:\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobMode: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobMode: 0\n  m_BuildTargetGraphicsAPIs:\n  - m_BuildTarget: AndroidPlayer\n    m_APIs: 0b00000008000000\n    m_Automatic: 0\n  - m_BuildTarget: iOSSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: AppleTVSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: WebGLSupport\n    m_APIs: 0b000000\n    m_Automatic: 1\n  m_BuildTargetVRSettings:\n  - m_BuildTarget: Standalone\n    m_Enabled: 0\n    m_Devices:\n    - Oculus\n    - OpenVR\n  m_DefaultShaderChunkSizeInMB: 16\n  m_DefaultShaderChunkCount: 0\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  openGLRequireES32: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    Android: 1\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality: []\n  m_BuildTargetGroupLightmapSettings: []\n  m_BuildTargetNormalMapEncoding: []\n  m_BuildTargetDefaultTextureCompressionFormat: []\n  playModeTestRunnerEnabled: 0\n  runPlayModeTestAsEditModeTest: 0\n  actionOnDotNetUnhandledException: 1\n  enableInternalProfiler: 0\n  logObjCUncaughtExceptions: 1\n  enableCrashReportAPI: 0\n  cameraUsageDescription: \n  locationUsageDescription: \n  microphoneUsageDescription: \n  bluetoothUsageDescription: \n  switchNMETAOverride: \n  switchNetLibKey: \n  switchSocketMemoryPoolSize: 6144\n  switchSocketAllocatorPoolSize: 128\n  switchSocketConcurrencyLimit: 14\n  switchScreenResolutionBehavior: 2\n  switchUseCPUProfiler: 0\n  switchUseGOLDLinker: 0\n  switchLTOSetting: 0\n  switchApplicationID: 0x01004b9000490000\n  switchNSODependencies: \n  switchTitleNames_0: \n  switchTitleNames_1: \n  switchTitleNames_2: \n  switchTitleNames_3: \n  switchTitleNames_4: \n  switchTitleNames_5: \n  switchTitleNames_6: \n  switchTitleNames_7: \n  switchTitleNames_8: \n  switchTitleNames_9: \n  switchTitleNames_10: \n  switchTitleNames_11: \n  switchTitleNames_12: \n  switchTitleNames_13: \n  switchTitleNames_14: \n  switchTitleNames_15: \n  switchPublisherNames_0: \n  switchPublisherNames_1: \n  switchPublisherNames_2: \n  switchPublisherNames_3: \n  switchPublisherNames_4: \n  switchPublisherNames_5: \n  switchPublisherNames_6: \n  switchPublisherNames_7: \n  switchPublisherNames_8: \n  switchPublisherNames_9: \n  switchPublisherNames_10: \n  switchPublisherNames_11: \n  switchPublisherNames_12: \n  switchPublisherNames_13: \n  switchPublisherNames_14: \n  switchPublisherNames_15: \n  switchIcons_0: {fileID: 0}\n  switchIcons_1: {fileID: 0}\n  switchIcons_2: {fileID: 0}\n  switchIcons_3: {fileID: 0}\n  switchIcons_4: {fileID: 0}\n  switchIcons_5: {fileID: 0}\n  switchIcons_6: {fileID: 0}\n  switchIcons_7: {fileID: 0}\n  switchIcons_8: {fileID: 0}\n  switchIcons_9: {fileID: 0}\n  switchIcons_10: {fileID: 0}\n  switchIcons_11: {fileID: 0}\n  switchIcons_12: {fileID: 0}\n  switchIcons_13: {fileID: 0}\n  switchIcons_14: {fileID: 0}\n  switchIcons_15: {fileID: 0}\n  switchSmallIcons_0: {fileID: 0}\n  switchSmallIcons_1: {fileID: 0}\n  switchSmallIcons_2: {fileID: 0}\n  switchSmallIcons_3: {fileID: 0}\n  switchSmallIcons_4: {fileID: 0}\n  switchSmallIcons_5: {fileID: 0}\n  switchSmallIcons_6: {fileID: 0}\n  switchSmallIcons_7: {fileID: 0}\n  switchSmallIcons_8: {fileID: 0}\n  switchSmallIcons_9: {fileID: 0}\n  switchSmallIcons_10: {fileID: 0}\n  switchSmallIcons_11: {fileID: 0}\n  switchSmallIcons_12: {fileID: 0}\n  switchSmallIcons_13: {fileID: 0}\n  switchSmallIcons_14: {fileID: 0}\n  switchSmallIcons_15: {fileID: 0}\n  switchManualHTML: \n  switchAccessibleURLs: \n  switchLegalInformation: \n  switchMainThreadStackSize: 1048576\n  switchPresenceGroupId: \n  switchLogoHandling: 0\n  switchReleaseVersion: 0\n  switchDisplayVersion: 1.0.0\n  switchStartupUserAccount: 0\n  switchTouchScreenUsage: 0\n  switchSupportedLanguagesMask: 0\n  switchLogoType: 0\n  switchApplicationErrorCodeCategory: \n  switchUserAccountSaveDataSize: 0\n  switchUserAccountSaveDataJournalSize: 0\n  switchApplicationAttribute: 0\n  switchCardSpecSize: -1\n  switchCardSpecClock: -1\n  switchRatingsMask: 0\n  switchRatingsInt_0: 0\n  switchRatingsInt_1: 0\n  switchRatingsInt_2: 0\n  switchRatingsInt_3: 0\n  switchRatingsInt_4: 0\n  switchRatingsInt_5: 0\n  switchRatingsInt_6: 0\n  switchRatingsInt_7: 0\n  switchRatingsInt_8: 0\n  switchRatingsInt_9: 0\n  switchRatingsInt_10: 0\n  switchRatingsInt_11: 0\n  switchRatingsInt_12: 0\n  switchLocalCommunicationIds_0: \n  switchLocalCommunicationIds_1: \n  switchLocalCommunicationIds_2: \n  switchLocalCommunicationIds_3: \n  switchLocalCommunicationIds_4: \n  switchLocalCommunicationIds_5: \n  switchLocalCommunicationIds_6: \n  switchLocalCommunicationIds_7: \n  switchParentalControl: 0\n  switchAllowsScreenshot: 1\n  switchAllowsVideoCapturing: 1\n  switchAllowsRuntimeAddOnContentInstall: 0\n  switchDataLossConfirmation: 0\n  switchUserAccountLockEnabled: 0\n  switchSystemResourceMemory: 16777216\n  switchSupportedNpadStyles: 3\n  switchNativeFsCacheSize: 32\n  switchIsHoldTypeHorizontal: 0\n  switchSupportedNpadCount: 8\n  switchSocketConfigEnabled: 0\n  switchTcpInitialSendBufferSize: 32\n  switchTcpInitialReceiveBufferSize: 64\n  switchTcpAutoSendBufferSizeMax: 256\n  switchTcpAutoReceiveBufferSizeMax: 256\n  switchUdpSendBufferSize: 9\n  switchUdpReceiveBufferSize: 42\n  switchSocketBufferEfficiency: 4\n  switchSocketInitializeEnabled: 1\n  switchNetworkInterfaceManagerInitializeEnabled: 1\n  switchPlayerConnectionEnabled: 1\n  switchUseNewStyleFilepaths: 0\n  switchUseMicroSleepForYield: 1\n  switchEnableRamDiskSupport: 0\n  switchMicroSleepForYieldTime: 25\n  switchRamDiskSpaceSize: 12\n  ps4NPAgeRating: 12\n  ps4NPTitleSecret: \n  ps4NPTrophyPackPath: \n  ps4ParentalLevel: 11\n  ps4ContentID: ED1633-NPXX51362_00-0000000000000000\n  ps4Category: 0\n  ps4MasterVersion: 01.00\n  ps4AppVersion: 01.00\n  ps4AppType: 0\n  ps4ParamSfxPath: \n  ps4VideoOutPixelFormat: 0\n  ps4VideoOutInitialWidth: 1920\n  ps4VideoOutBaseModeInitialWidth: 1920\n  ps4VideoOutReprojectionRate: 60\n  ps4PronunciationXMLPath: \n  ps4PronunciationSIGPath: \n  ps4BackgroundImagePath: \n  ps4StartupImagePath: \n  ps4StartupImagesFolder: \n  ps4IconImagesFolder: \n  ps4SaveDataImagePath: \n  ps4SdkOverride: \n  ps4BGMPath: \n  ps4ShareFilePath: \n  ps4ShareOverlayImagePath: \n  ps4PrivacyGuardImagePath: \n  ps4ExtraSceSysFile: \n  ps4NPtitleDatPath: \n  ps4RemotePlayKeyAssignment: -1\n  ps4RemotePlayKeyMappingDir: \n  ps4PlayTogetherPlayerCount: 0\n  ps4EnterButtonAssignment: 1\n  ps4ApplicationParam1: 0\n  ps4ApplicationParam2: 0\n  ps4ApplicationParam3: 0\n  ps4ApplicationParam4: 0\n  ps4DownloadDataSize: 0\n  ps4GarlicHeapSize: 2048\n  ps4ProGarlicHeapSize: 2560\n  playerPrefsMaxSize: 32768\n  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ\n  ps4pnSessions: 1\n  ps4pnPresence: 1\n  ps4pnFriends: 1\n  ps4pnGameCustomData: 1\n  playerPrefsSupport: 0\n  enableApplicationExit: 0\n  resetTempFolder: 1\n  restrictedAudioUsageRights: 0\n  ps4UseResolutionFallback: 0\n  ps4ReprojectionSupport: 0\n  ps4UseAudio3dBackend: 0\n  ps4UseLowGarlicFragmentationMode: 1\n  ps4SocialScreenEnabled: 0\n  ps4ScriptOptimizationLevel: 0\n  ps4Audio3dVirtualSpeakerCount: 14\n  ps4attribCpuUsage: 0\n  ps4PatchPkgPath: \n  ps4PatchLatestPkgPath: \n  ps4PatchChangeinfoPath: \n  ps4PatchDayOne: 0\n  ps4attribUserManagement: 0\n  ps4attribMoveSupport: 0\n  ps4attrib3DSupport: 0\n  ps4attribShareSupport: 0\n  ps4attribExclusiveVR: 0\n  ps4disableAutoHideSplash: 0\n  ps4videoRecordingFeaturesUsed: 0\n  ps4contentSearchFeaturesUsed: 0\n  ps4CompatibilityPS5: 0\n  ps4AllowPS5Detection: 0\n  ps4GPU800MHz: 1\n  ps4attribEyeToEyeDistanceSettingVR: 0\n  ps4IncludedModules: []\n  ps4attribVROutputEnabled: 0\n  monoEnv: \n  splashScreenBackgroundSourceLandscape: {fileID: 0}\n  splashScreenBackgroundSourcePortrait: {fileID: 0}\n  blurSplashScreenBackground: 1\n  spritePackerPolicy: \n  webGLMemorySize: 16\n  webGLExceptionSupport: 1\n  webGLNameFilesAsHashes: 0\n  webGLDataCaching: 1\n  webGLDebugSymbols: 0\n  webGLEmscriptenArgs: \n  webGLModulesDirectory: \n  webGLTemplate: APPLICATION:Default\n  webGLAnalyzeBuildSize: 0\n  webGLUseEmbeddedResources: 0\n  webGLCompressionFormat: 1\n  webGLWasmArithmeticExceptions: 0\n  webGLLinkerTarget: 1\n  webGLThreadsSupport: 0\n  webGLDecompressionFallback: 0\n  webGLPowerPreference: 2\n  scriptingDefineSymbols:\n    Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE\n  additionalCompilerArguments: {}\n  platformArchitecture: {}\n  scriptingBackend:\n    Standalone: 0\n  il2cppCompilerConfiguration: {}\n  managedStrippingLevel: {}\n  incrementalIl2cppBuild: {}\n  suppressCommonWarnings: 1\n  allowUnsafeCode: 0\n  useDeterministicCompilation: 1\n  enableRoslynAnalyzers: 1\n  selectedPlatform: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 1\n  gcIncremental: 0\n  assemblyVersionValidation: 1\n  gcWBarrierValidation: 0\n  apiCompatibilityLevelPerPlatform:\n    Standalone: 6\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: Template_3D\n  metroPackageVersion: \n  metroCertificatePath: \n  metroCertificatePassword: \n  metroCertificateSubject: \n  metroCertificateIssuer: \n  metroCertificateNotAfter: 0000000000000000\n  metroApplicationDescription: Template_3D\n  wsaImages: {}\n  metroTileShortName: \n  metroTileShowName: 0\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroSupportStreamingInstall: 0\n  metroLastRequiredScene: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 2\n  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}\n  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,\n    a: 1}\n  metroSplashScreenUseBackgroundColor: 0\n  platformCapabilities: {}\n  metroTargetDeviceFamilies: {}\n  metroFTAName: \n  metroFTAFileTypes: []\n  metroProtocolName: \n  vcxProjDefaultLanguage: \n  XboxOneProductId: \n  XboxOneUpdateKey: \n  XboxOneSandboxId: \n  XboxOneContentId: \n  XboxOneTitleId: \n  XboxOneSCId: \n  XboxOneGameOsOverridePath: \n  XboxOnePackagingOverridePath: \n  XboxOneAppManifestOverridePath: \n  XboxOneVersion: 1.0.0.0\n  XboxOnePackageEncryption: 0\n  XboxOnePackageUpdateGranularity: 2\n  XboxOneDescription: \n  XboxOneLanguage:\n  - enus\n  XboxOneCapability: []\n  XboxOneGameRating: {}\n  XboxOneIsContentPackage: 0\n  XboxOneEnhancedXboxCompatibilityMode: 0\n  XboxOneEnableGPUVariability: 0\n  XboxOneSockets: {}\n  XboxOneSplashScreen: {fileID: 0}\n  XboxOneAllowedProductIds: []\n  XboxOnePersistentLocalStorageSize: 0\n  XboxOneXTitleMemory: 8\n  XboxOneOverrideIdentityName: \n  XboxOneOverrideIdentityPublisher: \n  vrEditorSettings: {}\n  cloudServicesEnabled:\n    UNet: 1\n  luminIcon:\n    m_Name: \n    m_ModelFolderPath: \n    m_PortalFolderPath: \n  luminCert:\n    m_CertPath: \n    m_SignPackage: 1\n  luminIsChannelApp: 0\n  luminVersion:\n    m_VersionCode: 1\n    m_VersionName: \n  apiCompatibilityLevel: 6\n  activeInputHandler: 0\n  windowsGamepadBackendHint: 0\n  cloudProjectId: \n  framebufferDepthMemorylessMode: 0\n  qualitySettingsNames: []\n  projectName: \n  organizationId: \n  cloudEnabled: 0\n  legacyClampBlendShapeWeights: 1\n  playerDataPath: \n  forceSRGBBlit: 1\n  virtualTexturingSupportEnabled: 0\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2021.3.35f1\nm_EditorVersionWithRevision: 2021.3.35f1 (157b46ce122a)\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/QualitySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m_CurrentQuality: 5\n  m_QualitySettings:\n  - serializedVersion: 2\n    name: Very Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 15\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 1\n    textureQuality: 1\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.3\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.4\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 16\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Medium\n    pixelLightCount: 1\n    shadows: 1\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 1\n    lodBias: 0.7\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 64\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: High\n    pixelLightCount: 2\n    shadows: 2\n    shadowResolution: 1\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 40\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 256\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Very High\n    pixelLightCount: 3\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 70\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1.5\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 1024\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Ultra\n    pixelLightCount: 4\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 4\n    shadowDistance: 150\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 2\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4096\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  m_PerPlatformDefaultQuality:\n    Android: 2\n    Lumin: 5\n    Nintendo 3DS: 5\n    Nintendo Switch: 5\n    PS4: 5\n    PSP2: 2\n    Standalone: 5\n    WebGL: 3\n    Windows Store Apps: 5\n    XboxOne: 5\n    iPhone: 2\n    tvOS: 2\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Default\n  - TransparentFX\n  - Ignore Raycast\n  - \n  - Water\n  - UI\n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  m_SortingLayers:\n  - name: Default\n    uniqueID: 0\n    locked: 0\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/TimeManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!5 &1\nTimeManager:\n  m_ObjectHideFlags: 0\n  Fixed Timestep: 0.02\n  Maximum Allowed Timestep: 0.33333334\n  m_TimeScale: 1\n  Maximum Particle Timestep: 0.03\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/UnityConnectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 1\n  m_Enabled: 0\n  m_TestMode: 0\n  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events\n  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events\n  m_ConfigUrl: https://config.uca.cloud.unity3d.com\n  m_DashboardUrl: https://dashboard.unity3d.com\n  m_TestInitMode: 0\n  CrashReportingSettings:\n    m_EventUrl: https://perf-events.cloud.unity3d.com\n    m_Enabled: 0\n    m_LogBufferSize: 10\n    m_CaptureEditorExceptions: 1\n  UnityPurchasingSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n  UnityAnalyticsSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n    m_InitializeOnStartup: 1\n    m_PackageRequiringCoreStatsPresent: 0\n  UnityAdsSettings:\n    m_Enabled: 0\n    m_InitializeOnStartup: 1\n    m_TestMode: 0\n    m_IosGameId: \n    m_AndroidGameId: \n    m_GameIds: {}\n    m_GameId: \n  PerformanceReportingSettings:\n    m_Enabled: 0\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/VFXManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fileID: 0}\n  m_CopyBufferShader: {fileID: 0}\n  m_SortShader: {fileID: 0}\n  m_RenderPipeSettingsPath: \n  m_FixedTimeStep: 0.016666668\n  m_MaxDeltaTime: 0.05\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/VersionControlSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!890905787 &1\nVersionControlSettings:\n  m_ObjectHideFlags: 0\n  m_Mode: Visible Meta Files\n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/XRSettings.asset",
    "content": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n        \"False\",\n        \"False\"\n    ]\n}"
  },
  {
    "path": "Projects/2021.3 LTS/ProjectSettings/boot.config",
    "content": ""
  },
  {
    "path": "Projects/2021.3 LTS/UserSettings/EditorUserSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!162 &1\nEditorUserSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_ConfigSettings:\n    RecentlyUsedSceneGuid-0:\n      value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a\n      flags: 0\n    vcSharedLogLevel:\n      value: 0d5e400f0650\n      flags: 0\n  m_VCAutomaticAdd: 1\n  m_VCDebugCom: 0\n  m_VCDebugCmd: 0\n  m_VCDebugOut: 0\n  m_SemanticMergeMode: 2\n  m_DesiredImportWorkerCount: 4\n  m_StandbyImportWorkerCount: 2\n  m_IdleImportWorkerShutdownDelay: 60000\n  m_VCShowFailedCheckout: 1\n  m_VCOverwriteFailedCheckoutAssets: 1\n  m_VCProjectOverlayIcons: 1\n  m_VCHierarchyOverlayIcons: 1\n  m_VCOtherOverlayIcons: 1\n  m_VCAllowAsyncUpdate: 1\n  m_ArtifactGarbageCollection: 1\n"
  },
  {
    "path": "Projects/2021.3 LTS/UserSettings/Search.settings",
    "content": "{}"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Analyzer.meta",
    "content": "fileFormatVersion: 2\nguid: 8d0bad0c5e95e1244838d55955beac94\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef",
    "content": "{\n    \"name\": \"InAssetFolder\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": [],\n    \"noEngineReferences\": false\n}"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 02a83d3e11a5a9745b46ca562b00be0e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Custom Asmdef/TimTam.cs",
    "content": "using System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\npublic class TimTam : MonoBehaviour\n{\n    // Start is called before the first frame update\n    void Start()\n    {\n        \n    }\n\n    // Update is called once per frame\n    void Update()\n    {\n        \n    }\n}\n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Custom Asmdef/TimTam.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8569e12c481432146a309f64fab7c80c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Custom Asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 051e38478c4283c4ea841b4cd457dae4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Editor/CSProjAssetTests.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing NUnit.Framework;\nusing UnityEditor;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace VSCodeEditor.Runtime_spec.CSProject\n{\n    [TestFixture]\n    [Serializable]\n    public abstract class CleanupTest\n    {\n        [SerializeField]\n        protected IGenerator m_ProjectGeneration;\n\n        [SerializeField]\n        readonly List<string> m_GeneratedFiles = new();\n\n        [SerializeField]\n        readonly List<string> m_DirectoriesToDelete = new();\n\n        [SerializeField]\n        protected string m_CsProjPath;\n\n        [SerializeField]\n        protected DateTime m_LastWritten;\n\n        protected const string k_EmptyCSharpScript =\n            @\"\nusing UnityEngine;\npublic class SimpleCSharpScript : MonoBehaviour\n{\n  void Start()\n  {\n  }\n}\";\n\n        [SetUp]\n        public void SetUp()\n        {\n            var projectDirectory = Directory.GetParent(Application.dataPath).FullName;\n            m_ProjectGeneration = new ProjectGeneration(projectDirectory);\n        }\n\n        [UnityTearDown]\n        protected virtual IEnumerator TearDown()\n        {\n            foreach (var pathToDelete in m_GeneratedFiles)\n            {\n                if (File.Exists(pathToDelete))\n                {\n                    File.Delete(pathToDelete);\n                }\n\n                if (File.Exists(pathToDelete + \".meta\"))\n                {\n                    File.Delete(pathToDelete + \".meta\");\n                }\n            }\n\n            foreach (var directoryToDelete in m_DirectoriesToDelete)\n            {\n                if (Directory.Exists(directoryToDelete))\n                {\n                    Directory.Delete(directoryToDelete, true);\n                    File.Delete(directoryToDelete + \".meta\");\n                }\n            }\n\n            m_GeneratedFiles.Clear();\n            m_DirectoriesToDelete.Clear();\n\n            yield return new RecompileScripts(false);\n        }\n\n        protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content)\n        {\n            var targetFile = Path.Combine(assetPath, fileName);\n            m_GeneratedFiles.Add(targetFile);\n            File.WriteAllText(targetFile, content);\n        }\n\n        protected void CreateFolder(string path)\n        {\n            m_DirectoriesToDelete.Add(path);\n            Directory.CreateDirectory(path);\n        }\n    }\n\n    public class BuildTarget : CleanupTest\n    {\n        [SerializeField]\n        UnityEditor.BuildTarget m_Original;\n\n        protected override IEnumerator TearDown()\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                m_Original\n            );\n            return base.TearDown();\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges(\n            UnityEditor.BuildTarget platformTarget,\n            string platformDefine,\n            UnityEditor.BuildTarget changeTarget,\n            string changeDefine,\n            Action action\n        )\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                platformTarget\n            );\n            CopyScriptToAssetsFolder(\n                Application.dataPath,\n                \"SimpleCSharpScript.cs\",\n                k_EmptyCSharpScript\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            var dir = Directory.GetParent(Application.dataPath).FullName;\n            m_CsProjPath = Path.Combine(dir, \"Assembly-CSharp.csproj\");\n\n            AssertProjectContainsDefine(m_CsProjPath, platformDefine);\n\n            action();\n\n            m_LastWritten = DateTime.Now.AddSeconds(-1);\n            File.SetLastWriteTime(m_CsProjPath, m_LastWritten);\n\n            //switch target to another one than the standalone target for the current platform\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                changeTarget\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten);\n\n            AssertProjectContainsDefine(m_CsProjPath, changeDefine);\n            yield return null;\n        }\n\n        static void AssertProjectContainsDefine(string csProjPath, string expectedDefine)\n        {\n            var content = File.ReadAllText(csProjPath);\n            Assert.IsTrue(\n                Regex.IsMatch(content, $\"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>\")\n            );\n        }\n\n        delegate bool Condition();\n\n        static void WaitForCondition(Condition condition)\n        {\n            var started = DateTime.Now;\n            while (!condition())\n            {\n                if (DateTime.Now - started > k_Timeout)\n                    throw new TimeoutException(\n                        $\"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds\"\n                    );\n                Thread.Sleep(10);\n            }\n        }\n\n        static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5);\n    }\n}\n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Editor/CSProjAssetTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 09b6f746cf9797a4a97e259d45a38ec1\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Editor/RecompileScripts.cs",
    "content": "using System;\nusing System.Collections;\nusing UnityEditor;\nusing UnityEngine.TestTools;\n\npublic class RecompileScripts : IEditModeTestYieldInstruction\n{\n    public RecompileScripts()\n        : this(true) { }\n\n    public RecompileScripts(bool expectScriptCompilation)\n        : this(expectScriptCompilation, true) { }\n\n    public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess)\n    {\n        ExpectScriptCompilation = expectScriptCompilation;\n        ExpectScriptCompilationSuccess = expectScriptCompilationSuccess;\n        ExpectDomainReload = true;\n    }\n\n    public bool ExpectDomainReload { get; }\n    public bool ExpectedPlaymodeState { get; }\n    public bool ExpectScriptCompilation { get; }\n    public bool ExpectScriptCompilationSuccess { get; }\n    public static RecompileScripts Current { get; private set; }\n\n    public IEnumerator Perform()\n    {\n        Current = this;\n\n        AssetDatabase.Refresh();\n\n        if (ExpectScriptCompilation && !EditorApplication.isCompiling)\n        {\n            Current = null;\n            throw new Exception(\"Editor does not need to recompile scripts\");\n        }\n\n        EditorApplication.UnlockReloadAssemblies();\n\n        while (EditorApplication.isCompiling)\n        {\n            yield return null;\n        }\n\n        Current = null;\n\n        if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed)\n        {\n            EditorApplication.LockReloadAssemblies();\n            throw new Exception(\"Script compilation failed\");\n        }\n    }\n}\n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Editor/RecompileScripts.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 35e5ed6756833644c83c24382f01236b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 8a06cae000d3e064aa6a3530ef8bbabc\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/KoalaExtensionTest.koala",
    "content": ""
  },
  {
    "path": "Projects/2022.2 Latest/Assets/KoalaExtensionTest.koala.meta",
    "content": "fileFormatVersion: 2\nguid: 9972cb3bb6a98ab469a9399f8bc337c6\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Scenes/SampleScene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 705507994}\n  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 1\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_AtlasSize: 1024\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 500\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &705507993\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 705507995}\n  - component: {fileID: 705507994}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &705507994\nLight:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: -1\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.05\n    m_NormalBias: 0.4\n    m_NearPlane: 0.2\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_LightShadowCasterMode: 0\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &705507995\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &963194225\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 963194228}\n  - component: {fileID: 963194227}\n  - component: {fileID: 963194226}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &963194226\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n--- !u!20 &963194227\nCamera:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}\n  m_projectionMatrixMode: 1\n  m_SensorSize: {x: 36, y: 24}\n  m_LensShift: {x: 0, y: 0}\n  m_GateFitMode: 2\n  m_FocalLength: 50\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 1\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &963194228\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 1, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Scenes/SampleScene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 9fc0d4010bbf28b4594072e72b8655ab\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Scenes/SampleSceneSettings.lighting",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!850595691 &4890085278179872738\nLightingSettings:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_Name: SampleSceneSettings\n  serializedVersion: 2\n  m_GIWorkflowMode: 0\n  m_EnableBakedLightmaps: 1\n  m_EnableRealtimeLightmaps: 1\n  m_RealtimeEnvironmentLighting: 1\n  m_BounceScale: 1\n  m_AlbedoBoost: 1\n  m_IndirectOutputScale: 1\n  m_UsingShadowmask: 1\n  m_BakeBackend: 1\n  m_LightmapMaxSize: 1024\n  m_BakeResolution: 40\n  m_Padding: 2\n  m_TextureCompression: 1\n  m_AO: 0\n  m_AOMaxDistance: 1\n  m_CompAOExponent: 1\n  m_CompAOExponentDirect: 0\n  m_ExtractAO: 0\n  m_MixedBakeMode: 2\n  m_LightmapsBakeMode: 1\n  m_FilterMode: 1\n  m_LightmapParameters: {fileID: 0}\n  m_ExportTrainingData: 0\n  m_TrainingDataDestination: TrainingData\n  m_RealtimeResolution: 2\n  m_ForceWhiteAlbedo: 0\n  m_ForceUpdates: 0\n  m_FinalGather: 0\n  m_FinalGatherRayCount: 256\n  m_FinalGatherFiltering: 1\n  m_PVRCulling: 1\n  m_PVRSampling: 1\n  m_PVRDirectSampleCount: 32\n  m_PVRSampleCount: 500\n  m_PVREnvironmentSampleCount: 500\n  m_PVREnvironmentReferencePointCount: 2048\n  m_LightProbeSampleCountMultiplier: 4\n  m_PVRBounces: 2\n  m_PVRRussianRouletteStartBounce: 2\n  m_PVREnvironmentMIS: 0\n  m_PVRFilteringMode: 2\n  m_PVRDenoiserTypeDirect: 0\n  m_PVRDenoiserTypeIndirect: 0\n  m_PVRDenoiserTypeAO: 0\n  m_PVRFilterTypeDirect: 0\n  m_PVRFilterTypeIndirect: 0\n  m_PVRFilterTypeAO: 0\n  m_PVRFilteringGaussRadiusDirect: 1\n  m_PVRFilteringGaussRadiusIndirect: 5\n  m_PVRFilteringGaussRadiusAO: 2\n  m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n  m_PVRFilteringAtrousPositionSigmaIndirect: 2\n  m_PVRFilteringAtrousPositionSigmaAO: 1\n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Scenes/SampleSceneSettings.lighting.meta",
    "content": "fileFormatVersion: 2\nguid: a0eb4567ffade2f47b9fc6e006e4ce91\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Scenes.meta",
    "content": "fileFormatVersion: 2\nguid: 2c4ecd2c3fea48442bfed0ebc5181951\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Test.cs",
    "content": "using UnityEngine;\n\npublic class Test : MonoBehaviour\n{\n    void Start()\n    {\n        TestCode.TestClass.TestMethod();\n    }\n}"
  },
  {
    "path": "Projects/2022.2 Latest/Assets/Test.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8dc025fb3786c0b41a0bb4360be46b9a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.2 Latest/Packages/manifest.json",
    "content": "{\n  \"disableProjectUpdate\": true,\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": \"file:../../../com.tsk.ide.vscode\",\n    \"com.tsk.ide.vscodetests\": \"file:../../../com.tsk.ide.vscodetests\",\n    \"com.unity.test-framework\": \"1.3.3\"\n  }\n}\n"
  },
  {
    "path": "Projects/2022.2 Latest/Packages/packages-lock.json",
    "content": "{\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": {\n      \"version\": \"file:../../../com.tsk.ide.vscode\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {}\n    },\n    \"com.tsk.ide.vscodetests\": {\n      \"version\": \"file:../../../com.tsk.ide.vscodetests\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {\n        \"nuget.moq\": \"1.0.0\"\n      }\n    },\n    \"com.unity.ext.nunit\": {\n      \"version\": \"2.0.3\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.test-framework\": {\n      \"version\": \"1.3.3\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.ext.nunit\": \"2.0.3\",\n        \"com.unity.modules.imgui\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.castle-core\": {\n      \"version\": \"1.0.1\",\n      \"depth\": 2,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.moq\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"nuget.castle-core\": \"1.0.1\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.modules.imgui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.jsonserialize\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    }\n  }\n}\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/AudioManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  m_Volume: 1\n  Rolloff Scale: 1\n  Doppler Factor: 1\n  Default Speaker Mode: 2\n  m_SampleRate: 0\n  m_DSPBufferSize: 1024\n  m_VirtualVoiceCount: 512\n  m_RealVoiceCount: 32\n  m_SpatializerPlugin: \n  m_AmbisonicDecoderPlugin: \n  m_DisableAudio: 0\n  m_VirtualizeEffects: 1\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/ClusterInputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/DynamicsManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_Gravity: {x: 0, y: -9.81, z: 0}\n  m_DefaultMaterial: {fileID: 0}\n  m_BounceThreshold: 2\n  m_SleepThreshold: 0.005\n  m_DefaultContactOffset: 0.01\n  m_DefaultSolverIterations: 6\n  m_DefaultSolverVelocityIterations: 1\n  m_QueriesHitBackfaces: 0\n  m_QueriesHitTriggers: 1\n  m_EnableAdaptiveForce: 0\n  m_ClothInterCollisionDistance: 0\n  m_ClothInterCollisionStiffness: 0\n  m_ContactsGeneration: 1\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n  m_AutoSimulation: 1\n  m_AutoSyncTransforms: 0\n  m_ReuseCollisionCallbacks: 0\n  m_ClothInterCollisionSettingsToggle: 0\n  m_ContactPairsMode: 0\n  m_BroadphaseType: 0\n  m_WorldBounds:\n    m_Center: {x: 0, y: 0, z: 0}\n    m_Extent: {x: 250, y: 250, z: 250}\n  m_WorldSubdivisions: 8\n  m_FrictionType: 0\n  m_EnableEnhancedDeterminism: 0\n  m_EnableUnifiedHeightmaps: 1\n  m_DefaultMaxAngluarSpeed: 7\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/EditorBuildSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Scenes: []\n  m_configObjects: {}\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/EditorSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 7\n  m_ExternalVersionControlSupport: Hidden Meta Files\n  m_SerializationMode: 2\n  m_LineEndingsForNewScripts: 2\n  m_DefaultBehaviorMode: 0\n  m_PrefabRegularEnvironment: {fileID: 0}\n  m_PrefabUIEnvironment: {fileID: 0}\n  m_SpritePackerMode: 0\n  m_SpritePackerPaddingPower: 1\n  m_EtcTextureCompressorBehavior: 1\n  m_EtcTextureFastCompressor: 1\n  m_EtcTextureNormalCompressor: 2\n  m_EtcTextureBestCompressor: 4\n  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp\n  m_ProjectGenerationRootNamespace: \n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n  m_EnableTextureStreamingInEditMode: 0\n  m_EnableTextureStreamingInPlayMode: 1\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/GraphicsSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 12\n  m_Deferred:\n    m_Mode: 1\n    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}\n  m_DeferredReflections:\n    m_Mode: 1\n    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}\n  m_ScreenSpaceShadows:\n    m_Mode: 1\n    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}\n  m_LegacyDeferred:\n    m_Mode: 1\n    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}\n  m_DepthNormals:\n    m_Mode: 1\n    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}\n  m_MotionVectors:\n    m_Mode: 1\n    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}\n  m_LightHalo:\n    m_Mode: 1\n    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}\n  m_LensFlare:\n    m_Mode: 1\n    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}\n  m_AlwaysIncludedShaders:\n  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}\n  m_PreloadedShaders: []\n  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,\n    type: 0}\n  m_CustomRenderPipeline: {fileID: 0}\n  m_TransparencySortMode: 0\n  m_TransparencySortAxis: {x: 0, y: 0, z: 1}\n  m_DefaultRenderingPath: 1\n  m_DefaultMobileRenderingPath: 1\n  m_TierSettings: []\n  m_LightmapStripping: 0\n  m_FogStripping: 0\n  m_InstancingStripping: 0\n  m_LightmapKeepPlain: 1\n  m_LightmapKeepDirCombined: 1\n  m_LightmapKeepDynamicPlain: 1\n  m_LightmapKeepDynamicDirCombined: 1\n  m_LightmapKeepShadowMask: 1\n  m_LightmapKeepSubtractive: 1\n  m_FogKeepLinear: 1\n  m_FogKeepExp: 1\n  m_FogKeepExp2: 1\n  m_AlbedoSwatchInfos: []\n  m_LightsUseLinearIntensity: 0\n  m_LightsUseColorTemperature: 0\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/InputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Axes:\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: left\n    positiveButton: right\n    altNegativeButton: a\n    altPositiveButton: d\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: down\n    positiveButton: up\n    altNegativeButton: s\n    altPositiveButton: w\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left ctrl\n    altNegativeButton: \n    altPositiveButton: mouse 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left alt\n    altNegativeButton: \n    altPositiveButton: mouse 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left shift\n    altNegativeButton: \n    altPositiveButton: mouse 2\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: space\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse X\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse Y\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse ScrollWheel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 2\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 0\n    type: 2\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 1\n    type: 2\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 0\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 1\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 2\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 3\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: return\n    altNegativeButton: \n    altPositiveButton: joystick button 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: enter\n    altNegativeButton: \n    altPositiveButton: space\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Cancel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: escape\n    altNegativeButton: \n    altPositiveButton: joystick button 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/MemorySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!387306366 &1\nMemorySettings:\n  m_ObjectHideFlags: 0\n  m_EditorMemorySettings:\n    m_MainAllocatorBlockSize: -1\n    m_ThreadAllocatorBlockSize: -1\n    m_MainGfxBlockSize: -1\n    m_ThreadGfxBlockSize: -1\n    m_CacheBlockSize: -1\n    m_TypetreeBlockSize: -1\n    m_ProfilerBlockSize: -1\n    m_ProfilerEditorBlockSize: -1\n    m_BucketAllocatorGranularity: -1\n    m_BucketAllocatorBucketsCount: -1\n    m_BucketAllocatorBlockSize: -1\n    m_BucketAllocatorBlockCount: -1\n    m_ProfilerBucketAllocatorGranularity: -1\n    m_ProfilerBucketAllocatorBucketsCount: -1\n    m_ProfilerBucketAllocatorBlockSize: -1\n    m_ProfilerBucketAllocatorBlockCount: -1\n    m_TempAllocatorSizeMain: -1\n    m_JobTempAllocatorBlockSize: -1\n    m_BackgroundJobTempAllocatorBlockSize: -1\n    m_JobTempAllocatorReducedBlockSize: -1\n    m_TempAllocatorSizeGIBakingWorker: -1\n    m_TempAllocatorSizeNavMeshWorker: -1\n    m_TempAllocatorSizeAudioWorker: -1\n    m_TempAllocatorSizeCloudWorker: -1\n    m_TempAllocatorSizeGfx: -1\n    m_TempAllocatorSizeJobWorker: -1\n    m_TempAllocatorSizeBackgroundWorker: -1\n    m_TempAllocatorSizePreloadManager: -1\n  m_PlatformMemorySettings: {}\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/NavMeshAreas.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  areas:\n  - name: Walkable\n    cost: 1\n  - name: Not Walkable\n    cost: 1\n  - name: Jump\n    cost: 2\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  m_LastAgentTypeID: -887442657\n  m_Settings:\n  - serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.75\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_SettingNames:\n  - Humanoid\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/PackageManagerSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_EnablePreReleasePackages: 0\n  m_EnablePackageDependencies: 0\n  m_AdvancedSettingsExpanded: 1\n  m_ScopedRegistriesSettingsExpanded: 1\n  m_SeeAllPackageVersions: 0\n  oneTimeWarningShown: 0\n  m_Registries:\n  - m_Id: main\n    m_Name: \n    m_Url: https://packages.unity.com\n    m_Scopes: []\n    m_IsDefault: 1\n    m_Capabilities: 7\n    m_ConfigSource: 0\n  m_UserSelectedRegistryName: \n  m_UserAddingNewScopedRegistry: 0\n  m_RegistryInfoDraft:\n    m_Modified: 0\n    m_ErrorMessage: \n    m_UserModificationsInstanceId: -856\n    m_OriginalInstanceId: -858\n  m_LoadAssets: 0\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/Physics2DSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_Gravity: {x: 0, y: -9.81}\n  m_DefaultMaterial: {fileID: 0}\n  m_VelocityIterations: 8\n  m_PositionIterations: 3\n  m_VelocityThreshold: 1\n  m_MaxLinearCorrection: 0.2\n  m_MaxAngularCorrection: 8\n  m_MaxTranslationSpeed: 100\n  m_MaxRotationSpeed: 360\n  m_BaumgarteScale: 0.2\n  m_BaumgarteTimeOfImpactScale: 0.75\n  m_TimeToSleep: 0.5\n  m_LinearSleepTolerance: 0.01\n  m_AngularSleepTolerance: 2\n  m_DefaultContactOffset: 0.01\n  m_JobOptions:\n    serializedVersion: 2\n    useMultithreading: 0\n    useConsistencySorting: 0\n    m_InterpolationPosesPerJob: 100\n    m_NewContactsPerJob: 30\n    m_CollideContactsPerJob: 100\n    m_ClearFlagsPerJob: 200\n    m_ClearBodyForcesPerJob: 200\n    m_SyncDiscreteFixturesPerJob: 50\n    m_SyncContinuousFixturesPerJob: 50\n    m_FindNearestContactsPerJob: 100\n    m_UpdateTriggerContactsPerJob: 100\n    m_IslandSolverCostThreshold: 100\n    m_IslandSolverBodyCostScale: 1\n    m_IslandSolverContactCostScale: 10\n    m_IslandSolverJointCostScale: 10\n    m_IslandSolverBodiesPerJob: 50\n    m_IslandSolverContactsPerJob: 50\n  m_AutoSimulation: 1\n  m_QueriesHitTriggers: 1\n  m_QueriesStartInColliders: 1\n  m_CallbacksOnDisable: 1\n  m_ReuseCollisionCallbacks: 0\n  m_AutoSyncTransforms: 0\n  m_AlwaysShowColliders: 0\n  m_ShowColliderSleep: 1\n  m_ShowColliderContacts: 0\n  m_ShowColliderAABB: 0\n  m_ContactArrowScale: 0.2\n  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}\n  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}\n  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}\n  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/PresetManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  m_DefaultList: []\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/ProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 26\n  productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 4\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: DefaultCompany\n  productName: TestVSCodePackage\n  defaultCursor: {fileID: 0}\n  cursorHotspot: {x: 0, y: 0}\n  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}\n  m_ShowUnitySplashScreen: 1\n  m_ShowUnitySplashLogo: 1\n  m_SplashScreenOverlayOpacity: 1\n  m_SplashScreenAnimation: 1\n  m_SplashScreenLogoStyle: 1\n  m_SplashScreenDrawMode: 0\n  m_SplashScreenBackgroundAnimationZoom: 1\n  m_SplashScreenLogoAnimationZoom: 1\n  m_SplashScreenBackgroundLandscapeAspect: 1\n  m_SplashScreenBackgroundPortraitAspect: 1\n  m_SplashScreenBackgroundLandscapeUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenBackgroundPortraitUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenLogos: []\n  m_VirtualRealitySplashScreen: {fileID: 0}\n  m_HolographicTrackingLossScreen: {fileID: 0}\n  defaultScreenWidth: 1024\n  defaultScreenHeight: 768\n  defaultScreenWidthWeb: 960\n  defaultScreenHeightWeb: 600\n  m_StereoRenderingPath: 0\n  m_ActiveColorSpace: 0\n  m_SpriteBatchVertexThreshold: 300\n  m_MTRendering: 1\n  mipStripping: 0\n  numberOfMipsStripped: 0\n  numberOfMipsStrippedPerMipmapLimitGroup: {}\n  m_StackTraceTypes: 010000000100000001000000010000000100000001000000\n  iosShowActivityIndicatorOnLoading: -1\n  androidShowActivityIndicatorOnLoading: -1\n  iosUseCustomAppBackgroundBehavior: 0\n  allowedAutorotateToPortrait: 1\n  allowedAutorotateToPortraitUpsideDown: 1\n  allowedAutorotateToLandscapeRight: 1\n  allowedAutorotateToLandscapeLeft: 1\n  useOSAutorotation: 1\n  use32BitDisplayBuffer: 1\n  preserveFramebufferAlpha: 0\n  disableDepthAndStencilBuffers: 0\n  androidStartInFullscreen: 1\n  androidRenderOutsideSafeArea: 0\n  androidUseSwappy: 0\n  androidBlitType: 0\n  androidResizableWindow: 0\n  androidDefaultWindowWidth: 1920\n  androidDefaultWindowHeight: 1080\n  androidMinimumWindowWidth: 400\n  androidMinimumWindowHeight: 300\n  androidFullscreenMode: 1\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 1\n  captureSingleScreen: 0\n  muteOtherAudioSources: 0\n  Prepare IOS For Recording: 0\n  Force IOS Speakers When Recording: 0\n  deferSystemGesturesMode: 0\n  hideHomeButton: 0\n  submitAnalytics: 1\n  usePlayerLog: 1\n  bakeCollisionMeshes: 0\n  forceSingleInstance: 0\n  useFlipModelSwapchain: 1\n  resizableWindow: 0\n  useMacAppStoreValidation: 0\n  macAppStoreCategory: public.app-category.games\n  gpuSkinning: 1\n  xboxPIXTextureCapture: 0\n  xboxEnableAvatar: 0\n  xboxEnableKinect: 0\n  xboxEnableKinectAutoTracking: 0\n  xboxEnableFitness: 0\n  visibleInBackground: 1\n  allowFullscreenSwitch: 1\n  fullscreenMode: 1\n  xboxSpeechDB: 0\n  xboxEnableHeadOrientation: 0\n  xboxEnableGuest: 0\n  xboxEnablePIXSampling: 0\n  metalFramebufferOnly: 0\n  xboxOneResolution: 0\n  xboxOneSResolution: 0\n  xboxOneXResolution: 3\n  xboxOneMonoLoggingLevel: 0\n  xboxOneLoggingLevel: 1\n  xboxOneDisableEsram: 0\n  xboxOneEnableTypeOptimization: 0\n  xboxOnePresentImmediateThreshold: 0\n  switchQueueCommandMemory: 0\n  switchQueueControlMemory: 0\n  switchQueueComputeMemory: 262144\n  switchNVNShaderPoolsGranularity: 33554432\n  switchNVNDefaultPoolsGranularity: 16777216\n  switchNVNOtherPoolsGranularity: 16777216\n  switchGpuScratchPoolGranularity: 2097152\n  switchAllowGpuScratchShrinking: 0\n  switchNVNMaxPublicTextureIDCount: 0\n  switchNVNMaxPublicSamplerIDCount: 0\n  switchNVNGraphicsFirmwareMemory: 32\n  stadiaPresentMode: 0\n  stadiaTargetFramerate: 0\n  vulkanNumSwapchainBuffers: 3\n  vulkanEnableSetSRGBWrite: 0\n  vulkanEnablePreTransform: 0\n  vulkanEnableLateAcquireNextImage: 0\n  vulkanEnableCommandBufferRecycling: 1\n  loadStoreDebugModeEnabled: 0\n  bundleVersion: 0.1\n  preloadedAssets: []\n  metroInputSource: 0\n  wsaTransparentSwapchain: 0\n  m_HolographicPauseOnTrackingLoss: 1\n  xboxOneDisableKinectGpuReservation: 0\n  xboxOneEnable7thCore: 0\n  vrSettings:\n    enable360StereoCapture: 0\n  isWsaHolographicRemotingEnabled: 0\n  enableFrameTimingStats: 0\n  enableOpenGLProfilerGPURecorders: 1\n  useHDRDisplay: 0\n  D3DHDRBitDepth: 0\n  m_ColorGamuts: 00000000\n  targetPixelDensity: 30\n  resolutionScalingMode: 0\n  resetResolutionOnWindowResize: 0\n  androidSupportedAspectRatio: 1\n  androidMaxAspectRatio: 2.1\n  applicationIdentifier:\n    Standalone: com.DefaultCompany.TestVSCodePackage\n  buildNumber:\n    Standalone: 0\n    iPhone: 0\n    tvOS: 0\n  overrideDefaultApplicationIdentifier: 0\n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 22\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 0\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  APKExpansionFiles: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 1\n  strictShaderVariantMatching: 0\n  VertexChannelCompressionMask: 4054\n  iPhoneSdkVersion: 988\n  iOSTargetOSVersionString: 12.0\n  tvOSSdkVersion: 0\n  tvOSRequireExtendedGameController: 0\n  tvOSTargetOSVersionString: 12.0\n  uIPrerenderedIcon: 0\n  uIRequiresPersistentWiFi: 0\n  uIRequiresFullScreen: 1\n  uIStatusBarHidden: 1\n  uIExitOnSuspend: 0\n  uIStatusBarStyle: 0\n  appleTVSplashScreen: {fileID: 0}\n  appleTVSplashScreen2x: {fileID: 0}\n  tvOSSmallIconLayers: []\n  tvOSSmallIconLayers2x: []\n  tvOSLargeIconLayers: []\n  tvOSLargeIconLayers2x: []\n  tvOSTopShelfImageLayers: []\n  tvOSTopShelfImageLayers2x: []\n  tvOSTopShelfImageWideLayers: []\n  tvOSTopShelfImageWideLayers2x: []\n  iOSLaunchScreenType: 0\n  iOSLaunchScreenPortrait: {fileID: 0}\n  iOSLaunchScreenLandscape: {fileID: 0}\n  iOSLaunchScreenBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreenFillPct: 100\n  iOSLaunchScreenSize: 100\n  iOSLaunchScreenCustomXibPath: \n  iOSLaunchScreeniPadType: 0\n  iOSLaunchScreeniPadImage: {fileID: 0}\n  iOSLaunchScreeniPadBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreeniPadFillPct: 100\n  iOSLaunchScreeniPadSize: 100\n  iOSLaunchScreeniPadCustomXibPath: \n  iOSLaunchScreenCustomStoryboardPath: \n  iOSLaunchScreeniPadCustomStoryboardPath: \n  iOSDeviceRequirements: []\n  iOSURLSchemes: []\n  macOSURLSchemes: []\n  iOSBackgroundModes: 0\n  iOSMetalForceHardShadows: 0\n  metalEditorSupport: 1\n  metalAPIValidation: 1\n  iOSRenderExtraFrameOnPause: 0\n  iosCopyPluginsCodeInsteadOfSymlink: 0\n  appleDeveloperTeamID: \n  iOSManualSigningProvisioningProfileID: \n  tvOSManualSigningProvisioningProfileID: \n  iOSManualSigningProvisioningProfileType: 0\n  tvOSManualSigningProvisioningProfileType: 0\n  appleEnableAutomaticSigning: 0\n  iOSRequireARKit: 0\n  iOSAutomaticallyDetectAndAddCapabilities: 1\n  appleEnableProMotion: 0\n  shaderPrecisionModel: 0\n  clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea\n  templatePackageId: com.unity.template.3d@1.0.8\n  templateDefaultScene: Assets/Scenes/SampleScene.unity\n  useCustomMainManifest: 0\n  useCustomLauncherManifest: 0\n  useCustomMainGradleTemplate: 0\n  useCustomLauncherGradleManifest: 0\n  useCustomBaseGradleTemplate: 0\n  useCustomGradlePropertiesTemplate: 0\n  useCustomGradleSettingsTemplate: 0\n  useCustomProguardFile: 0\n  AndroidTargetArchitectures: 5\n  AndroidTargetDevices: 0\n  AndroidSplashScreenScale: 0\n  androidSplashScreen: {fileID: 0}\n  AndroidKeystoreName: '{inproject}: '\n  AndroidKeyaliasName: \n  AndroidEnableArmv9SecurityFeatures: 0\n  AndroidBuildApkPerCpuArchitecture: 0\n  AndroidTVCompatibility: 0\n  AndroidIsGame: 1\n  AndroidEnableTango: 0\n  androidEnableBanner: 1\n  androidUseLowAccuracyLocation: 0\n  androidUseCustomKeystore: 0\n  m_AndroidBanners:\n  - width: 320\n    height: 180\n    banner: {fileID: 0}\n  androidGamepadSupportLevel: 0\n  chromeosInputEmulation: 1\n  AndroidMinifyRelease: 0\n  AndroidMinifyDebug: 0\n  AndroidValidateAppBundleSize: 1\n  AndroidAppBundleSizeToValidate: 100\n  m_BuildTargetIcons: []\n  m_BuildTargetPlatformIcons:\n  - m_BuildTarget: Android\n    m_Icons:\n    - m_Textures: []\n      m_Width: 432\n      m_Height: 432\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 324\n      m_Height: 324\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 216\n      m_Height: 216\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 162\n      m_Height: 162\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 108\n      m_Height: 108\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 81\n      m_Height: 81\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 0\n      m_SubKind: \n  m_BuildTargetBatching:\n  - m_BuildTarget: Standalone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: tvOS\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: Android\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: iPhone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: WebGL\n    m_StaticBatching: 0\n    m_DynamicBatching: 0\n  m_BuildTargetShaderSettings: []\n  m_BuildTargetGraphicsJobs:\n  - m_BuildTarget: WindowsStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MacStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LinuxStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AndroidPlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: iOSSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS5Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreXboxOneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreScarlettSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: Switch\n    m_GraphicsJobs: 0\n  - m_BuildTarget: WebGLSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MetroSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AppleTVSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: BJMSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LuminSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: CloudRendering\n    m_GraphicsJobs: 0\n  - m_BuildTarget: EmbeddedLinux\n    m_GraphicsJobs: 0\n  m_BuildTargetGraphicsJobMode:\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobMode: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobMode: 0\n  m_BuildTargetGraphicsAPIs:\n  - m_BuildTarget: AndroidPlayer\n    m_APIs: 0b00000008000000\n    m_Automatic: 0\n  - m_BuildTarget: iOSSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: AppleTVSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: WebGLSupport\n    m_APIs: 0b000000\n    m_Automatic: 1\n  m_BuildTargetVRSettings:\n  - m_BuildTarget: Standalone\n    m_Enabled: 0\n    m_Devices:\n    - Oculus\n    - OpenVR\n  m_DefaultShaderChunkSizeInMB: 16\n  m_DefaultShaderChunkCount: 0\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  openGLRequireES32: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    Android: 1\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality: []\n  m_BuildTargetGroupHDRCubemapEncodingQuality: []\n  m_BuildTargetGroupLightmapSettings: []\n  m_BuildTargetGroupLoadStoreDebugModeSettings: []\n  m_BuildTargetNormalMapEncoding: []\n  m_BuildTargetDefaultTextureCompressionFormat: []\n  playModeTestRunnerEnabled: 0\n  runPlayModeTestAsEditModeTest: 0\n  actionOnDotNetUnhandledException: 1\n  enableInternalProfiler: 0\n  logObjCUncaughtExceptions: 1\n  enableCrashReportAPI: 0\n  cameraUsageDescription: \n  locationUsageDescription: \n  microphoneUsageDescription: \n  bluetoothUsageDescription: \n  macOSTargetOSVersion: 10.13.0\n  switchNMETAOverride: \n  switchNetLibKey: \n  switchSocketMemoryPoolSize: 6144\n  switchSocketAllocatorPoolSize: 128\n  switchSocketConcurrencyLimit: 14\n  switchScreenResolutionBehavior: 2\n  switchUseCPUProfiler: 0\n  switchUseGOLDLinker: 0\n  switchLTOSetting: 0\n  switchApplicationID: 0x01004b9000490000\n  switchNSODependencies: \n  switchCompilerFlags: \n  switchTitleNames_0: \n  switchTitleNames_1: \n  switchTitleNames_2: \n  switchTitleNames_3: \n  switchTitleNames_4: \n  switchTitleNames_5: \n  switchTitleNames_6: \n  switchTitleNames_7: \n  switchTitleNames_8: \n  switchTitleNames_9: \n  switchTitleNames_10: \n  switchTitleNames_11: \n  switchTitleNames_12: \n  switchTitleNames_13: \n  switchTitleNames_14: \n  switchTitleNames_15: \n  switchPublisherNames_0: \n  switchPublisherNames_1: \n  switchPublisherNames_2: \n  switchPublisherNames_3: \n  switchPublisherNames_4: \n  switchPublisherNames_5: \n  switchPublisherNames_6: \n  switchPublisherNames_7: \n  switchPublisherNames_8: \n  switchPublisherNames_9: \n  switchPublisherNames_10: \n  switchPublisherNames_11: \n  switchPublisherNames_12: \n  switchPublisherNames_13: \n  switchPublisherNames_14: \n  switchPublisherNames_15: \n  switchIcons_0: {fileID: 0}\n  switchIcons_1: {fileID: 0}\n  switchIcons_2: {fileID: 0}\n  switchIcons_3: {fileID: 0}\n  switchIcons_4: {fileID: 0}\n  switchIcons_5: {fileID: 0}\n  switchIcons_6: {fileID: 0}\n  switchIcons_7: {fileID: 0}\n  switchIcons_8: {fileID: 0}\n  switchIcons_9: {fileID: 0}\n  switchIcons_10: {fileID: 0}\n  switchIcons_11: {fileID: 0}\n  switchIcons_12: {fileID: 0}\n  switchIcons_13: {fileID: 0}\n  switchIcons_14: {fileID: 0}\n  switchIcons_15: {fileID: 0}\n  switchSmallIcons_0: {fileID: 0}\n  switchSmallIcons_1: {fileID: 0}\n  switchSmallIcons_2: {fileID: 0}\n  switchSmallIcons_3: {fileID: 0}\n  switchSmallIcons_4: {fileID: 0}\n  switchSmallIcons_5: {fileID: 0}\n  switchSmallIcons_6: {fileID: 0}\n  switchSmallIcons_7: {fileID: 0}\n  switchSmallIcons_8: {fileID: 0}\n  switchSmallIcons_9: {fileID: 0}\n  switchSmallIcons_10: {fileID: 0}\n  switchSmallIcons_11: {fileID: 0}\n  switchSmallIcons_12: {fileID: 0}\n  switchSmallIcons_13: {fileID: 0}\n  switchSmallIcons_14: {fileID: 0}\n  switchSmallIcons_15: {fileID: 0}\n  switchManualHTML: \n  switchAccessibleURLs: \n  switchLegalInformation: \n  switchMainThreadStackSize: 1048576\n  switchPresenceGroupId: \n  switchLogoHandling: 0\n  switchReleaseVersion: 0\n  switchDisplayVersion: 1.0.0\n  switchStartupUserAccount: 0\n  switchSupportedLanguagesMask: 0\n  switchLogoType: 0\n  switchApplicationErrorCodeCategory: \n  switchUserAccountSaveDataSize: 0\n  switchUserAccountSaveDataJournalSize: 0\n  switchApplicationAttribute: 0\n  switchCardSpecSize: -1\n  switchCardSpecClock: -1\n  switchRatingsMask: 0\n  switchRatingsInt_0: 0\n  switchRatingsInt_1: 0\n  switchRatingsInt_2: 0\n  switchRatingsInt_3: 0\n  switchRatingsInt_4: 0\n  switchRatingsInt_5: 0\n  switchRatingsInt_6: 0\n  switchRatingsInt_7: 0\n  switchRatingsInt_8: 0\n  switchRatingsInt_9: 0\n  switchRatingsInt_10: 0\n  switchRatingsInt_11: 0\n  switchRatingsInt_12: 0\n  switchLocalCommunicationIds_0: \n  switchLocalCommunicationIds_1: \n  switchLocalCommunicationIds_2: \n  switchLocalCommunicationIds_3: \n  switchLocalCommunicationIds_4: \n  switchLocalCommunicationIds_5: \n  switchLocalCommunicationIds_6: \n  switchLocalCommunicationIds_7: \n  switchParentalControl: 0\n  switchAllowsScreenshot: 1\n  switchAllowsVideoCapturing: 1\n  switchAllowsRuntimeAddOnContentInstall: 0\n  switchDataLossConfirmation: 0\n  switchUserAccountLockEnabled: 0\n  switchSystemResourceMemory: 16777216\n  switchSupportedNpadStyles: 3\n  switchNativeFsCacheSize: 32\n  switchIsHoldTypeHorizontal: 0\n  switchSupportedNpadCount: 8\n  switchEnableTouchScreen: 1\n  switchSocketConfigEnabled: 0\n  switchTcpInitialSendBufferSize: 32\n  switchTcpInitialReceiveBufferSize: 64\n  switchTcpAutoSendBufferSizeMax: 256\n  switchTcpAutoReceiveBufferSizeMax: 256\n  switchUdpSendBufferSize: 9\n  switchUdpReceiveBufferSize: 42\n  switchSocketBufferEfficiency: 4\n  switchSocketInitializeEnabled: 1\n  switchNetworkInterfaceManagerInitializeEnabled: 1\n  switchPlayerConnectionEnabled: 1\n  switchUseNewStyleFilepaths: 0\n  switchUseLegacyFmodPriorities: 0\n  switchUseMicroSleepForYield: 1\n  switchEnableRamDiskSupport: 0\n  switchMicroSleepForYieldTime: 25\n  switchRamDiskSpaceSize: 12\n  ps4NPAgeRating: 12\n  ps4NPTitleSecret: \n  ps4NPTrophyPackPath: \n  ps4ParentalLevel: 11\n  ps4ContentID: ED1633-NPXX51362_00-0000000000000000\n  ps4Category: 0\n  ps4MasterVersion: 01.00\n  ps4AppVersion: 01.00\n  ps4AppType: 0\n  ps4ParamSfxPath: \n  ps4VideoOutPixelFormat: 0\n  ps4VideoOutInitialWidth: 1920\n  ps4VideoOutBaseModeInitialWidth: 1920\n  ps4VideoOutReprojectionRate: 60\n  ps4PronunciationXMLPath: \n  ps4PronunciationSIGPath: \n  ps4BackgroundImagePath: \n  ps4StartupImagePath: \n  ps4StartupImagesFolder: \n  ps4IconImagesFolder: \n  ps4SaveDataImagePath: \n  ps4SdkOverride: \n  ps4BGMPath: \n  ps4ShareFilePath: \n  ps4ShareOverlayImagePath: \n  ps4PrivacyGuardImagePath: \n  ps4ExtraSceSysFile: \n  ps4NPtitleDatPath: \n  ps4RemotePlayKeyAssignment: -1\n  ps4RemotePlayKeyMappingDir: \n  ps4PlayTogetherPlayerCount: 0\n  ps4EnterButtonAssignment: 1\n  ps4ApplicationParam1: 0\n  ps4ApplicationParam2: 0\n  ps4ApplicationParam3: 0\n  ps4ApplicationParam4: 0\n  ps4DownloadDataSize: 0\n  ps4GarlicHeapSize: 2048\n  ps4ProGarlicHeapSize: 2560\n  playerPrefsMaxSize: 32768\n  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ\n  ps4pnSessions: 1\n  ps4pnPresence: 1\n  ps4pnFriends: 1\n  ps4pnGameCustomData: 1\n  playerPrefsSupport: 0\n  enableApplicationExit: 0\n  resetTempFolder: 1\n  restrictedAudioUsageRights: 0\n  ps4UseResolutionFallback: 0\n  ps4ReprojectionSupport: 0\n  ps4UseAudio3dBackend: 0\n  ps4UseLowGarlicFragmentationMode: 1\n  ps4SocialScreenEnabled: 0\n  ps4ScriptOptimizationLevel: 0\n  ps4Audio3dVirtualSpeakerCount: 14\n  ps4attribCpuUsage: 0\n  ps4PatchPkgPath: \n  ps4PatchLatestPkgPath: \n  ps4PatchChangeinfoPath: \n  ps4PatchDayOne: 0\n  ps4attribUserManagement: 0\n  ps4attribMoveSupport: 0\n  ps4attrib3DSupport: 0\n  ps4attribShareSupport: 0\n  ps4attribExclusiveVR: 0\n  ps4disableAutoHideSplash: 0\n  ps4videoRecordingFeaturesUsed: 0\n  ps4contentSearchFeaturesUsed: 0\n  ps4CompatibilityPS5: 0\n  ps4AllowPS5Detection: 0\n  ps4GPU800MHz: 1\n  ps4attribEyeToEyeDistanceSettingVR: 0\n  ps4IncludedModules: []\n  ps4attribVROutputEnabled: 0\n  monoEnv: \n  splashScreenBackgroundSourceLandscape: {fileID: 0}\n  splashScreenBackgroundSourcePortrait: {fileID: 0}\n  blurSplashScreenBackground: 1\n  spritePackerPolicy: \n  webGLMemorySize: 16\n  webGLExceptionSupport: 1\n  webGLNameFilesAsHashes: 0\n  webGLShowDiagnostics: 0\n  webGLDataCaching: 1\n  webGLDebugSymbols: 0\n  webGLEmscriptenArgs: \n  webGLModulesDirectory: \n  webGLTemplate: APPLICATION:Default\n  webGLAnalyzeBuildSize: 0\n  webGLUseEmbeddedResources: 0\n  webGLCompressionFormat: 1\n  webGLWasmArithmeticExceptions: 0\n  webGLLinkerTarget: 1\n  webGLThreadsSupport: 0\n  webGLDecompressionFallback: 0\n  webGLInitialMemorySize: 32\n  webGLMaximumMemorySize: 2048\n  webGLMemoryGrowthMode: 2\n  webGLMemoryLinearGrowthStep: 16\n  webGLMemoryGeometricGrowthStep: 0.2\n  webGLMemoryGeometricGrowthCap: 96\n  webGLPowerPreference: 2\n  scriptingDefineSymbols:\n    Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE\n  additionalCompilerArguments: {}\n  platformArchitecture: {}\n  scriptingBackend:\n    Standalone: 0\n  il2cppCompilerConfiguration: {}\n  il2cppCodeGeneration: {}\n  managedStrippingLevel:\n    EmbeddedLinux: 1\n    GameCoreScarlett: 1\n    GameCoreXboxOne: 1\n    Nintendo Switch: 1\n    PS4: 1\n    PS5: 1\n    QNX: 1\n    Stadia: 1\n    WebGL: 1\n    Windows Store Apps: 1\n    XboxOne: 1\n    iPhone: 1\n    tvOS: 1\n  incrementalIl2cppBuild: {}\n  suppressCommonWarnings: 1\n  allowUnsafeCode: 0\n  useDeterministicCompilation: 1\n  selectedPlatform: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 1\n  gcIncremental: 0\n  gcWBarrierValidation: 0\n  apiCompatibilityLevelPerPlatform:\n    Standalone: 6\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: Template_3D\n  metroPackageVersion: \n  metroCertificatePath: \n  metroCertificatePassword: \n  metroCertificateSubject: \n  metroCertificateIssuer: \n  metroCertificateNotAfter: 0000000000000000\n  metroApplicationDescription: Template_3D\n  wsaImages: {}\n  metroTileShortName: \n  metroTileShowName: 0\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroSupportStreamingInstall: 0\n  metroLastRequiredScene: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 2\n  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}\n  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,\n    a: 1}\n  metroSplashScreenUseBackgroundColor: 0\n  platformCapabilities: {}\n  metroTargetDeviceFamilies: {}\n  metroFTAName: \n  metroFTAFileTypes: []\n  metroProtocolName: \n  vcxProjDefaultLanguage: \n  XboxOneProductId: \n  XboxOneUpdateKey: \n  XboxOneSandboxId: \n  XboxOneContentId: \n  XboxOneTitleId: \n  XboxOneSCId: \n  XboxOneGameOsOverridePath: \n  XboxOnePackagingOverridePath: \n  XboxOneAppManifestOverridePath: \n  XboxOneVersion: 1.0.0.0\n  XboxOnePackageEncryption: 0\n  XboxOnePackageUpdateGranularity: 2\n  XboxOneDescription: \n  XboxOneLanguage:\n  - enus\n  XboxOneCapability: []\n  XboxOneGameRating: {}\n  XboxOneIsContentPackage: 0\n  XboxOneEnhancedXboxCompatibilityMode: 0\n  XboxOneEnableGPUVariability: 0\n  XboxOneSockets: {}\n  XboxOneSplashScreen: {fileID: 0}\n  XboxOneAllowedProductIds: []\n  XboxOnePersistentLocalStorageSize: 0\n  XboxOneXTitleMemory: 8\n  XboxOneOverrideIdentityName: \n  XboxOneOverrideIdentityPublisher: \n  vrEditorSettings: {}\n  cloudServicesEnabled:\n    UNet: 1\n  luminIcon:\n    m_Name: \n    m_ModelFolderPath: \n    m_PortalFolderPath: \n  luminCert:\n    m_CertPath: \n    m_SignPackage: 1\n  luminIsChannelApp: 0\n  luminVersion:\n    m_VersionCode: 1\n    m_VersionName: \n  hmiPlayerDataPath: \n  hmiForceSRGBBlit: 1\n  embeddedLinuxEnableGamepadInput: 1\n  hmiLogStartupTiming: 0\n  hmiCpuConfiguration: \n  apiCompatibilityLevel: 6\n  activeInputHandler: 0\n  windowsGamepadBackendHint: 0\n  cloudProjectId: \n  framebufferDepthMemorylessMode: 0\n  qualitySettingsNames: []\n  projectName: \n  organizationId: \n  cloudEnabled: 0\n  legacyClampBlendShapeWeights: 1\n  hmiLoadingImage: {fileID: 0}\n  virtualTexturingSupportEnabled: 0\n  insecureHttpOption: 0\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2022.2.12f1\nm_EditorVersionWithRevision: 2022.2.12f1 (022dac4955a3)\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/QualitySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m_CurrentQuality: 5\n  m_QualitySettings:\n  - serializedVersion: 2\n    name: Very Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 15\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 1\n    textureQuality: 1\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.3\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.4\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 16\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Medium\n    pixelLightCount: 1\n    shadows: 1\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 1\n    lodBias: 0.7\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 64\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: High\n    pixelLightCount: 2\n    shadows: 2\n    shadowResolution: 1\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 40\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 256\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Very High\n    pixelLightCount: 3\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 70\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1.5\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 1024\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Ultra\n    pixelLightCount: 4\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 4\n    shadowDistance: 150\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 2\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4096\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  m_PerPlatformDefaultQuality:\n    Android: 2\n    Lumin: 5\n    Nintendo 3DS: 5\n    Nintendo Switch: 5\n    PS4: 5\n    PSP2: 2\n    Standalone: 5\n    WebGL: 3\n    Windows Store Apps: 5\n    XboxOne: 5\n    iPhone: 2\n    tvOS: 2\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Default\n  - TransparentFX\n  - Ignore Raycast\n  - \n  - Water\n  - UI\n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  m_SortingLayers:\n  - name: Default\n    uniqueID: 0\n    locked: 0\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/TimeManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!5 &1\nTimeManager:\n  m_ObjectHideFlags: 0\n  Fixed Timestep: 0.02\n  Maximum Allowed Timestep: 0.33333334\n  m_TimeScale: 1\n  Maximum Particle Timestep: 0.03\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/UnityConnectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 1\n  m_Enabled: 0\n  m_TestMode: 0\n  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events\n  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events\n  m_ConfigUrl: https://config.uca.cloud.unity3d.com\n  m_TestInitMode: 0\n  CrashReportingSettings:\n    m_EventUrl: https://perf-events.cloud.unity3d.com\n    m_Enabled: 0\n    m_LogBufferSize: 10\n    m_CaptureEditorExceptions: 1\n  UnityPurchasingSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n  UnityAnalyticsSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n    m_InitializeOnStartup: 1\n  UnityAdsSettings:\n    m_Enabled: 0\n    m_InitializeOnStartup: 1\n    m_TestMode: 0\n    m_IosGameId: \n    m_AndroidGameId: \n    m_GameIds: {}\n    m_GameId: \n  PerformanceReportingSettings:\n    m_Enabled: 0\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/VFXManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fileID: 0}\n  m_CopyBufferShader: {fileID: 0}\n  m_SortShader: {fileID: 0}\n  m_RenderPipeSettingsPath: \n  m_FixedTimeStep: 0.016666668\n  m_MaxDeltaTime: 0.05\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/VersionControlSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!890905787 &1\nVersionControlSettings:\n  m_ObjectHideFlags: 0\n  m_Mode: Visible Meta Files\n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n"
  },
  {
    "path": "Projects/2022.2 Latest/ProjectSettings/XRSettings.asset",
    "content": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n        \"False\",\n        \"False\"\n    ]\n}"
  },
  {
    "path": "Projects/2022.2 Latest/UserSettings/EditorUserSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!162 &1\nEditorUserSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_ConfigSettings:\n    RecentlyUsedSceneGuid-0:\n      value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a\n      flags: 0\n    vcSharedLogLevel:\n      value: 0d5e400f0650\n      flags: 0\n  m_VCAutomaticAdd: 1\n  m_VCDebugCom: 0\n  m_VCDebugCmd: 0\n  m_VCDebugOut: 0\n  m_SemanticMergeMode: 2\n  m_DesiredImportWorkerCount: 4\n  m_StandbyImportWorkerCount: 2\n  m_IdleImportWorkerShutdownDelay: 60000\n  m_VCShowFailedCheckout: 1\n  m_VCOverwriteFailedCheckoutAssets: 1\n  m_VCProjectOverlayIcons: 1\n  m_VCHierarchyOverlayIcons: 1\n  m_VCOtherOverlayIcons: 1\n  m_VCAllowAsyncUpdate: 1\n  m_ArtifactGarbageCollection: 1\n"
  },
  {
    "path": "Projects/2022.2 Latest/UserSettings/Search.index",
    "content": "{\n    \"name\": \"Assets\",\n    \"roots\": [\"Assets\"],\n    \"includes\": [],\n    \"excludes\": [],\n    \"options\": {\n        \"types\": true,\n        \"properties\": true,\n        \"extended\": false,\n        \"dependencies\": false\n    },\n    \"baseScore\": 999\n}"
  },
  {
    "path": "Projects/2022.2 Latest/UserSettings/Search.settings",
    "content": "trackSelection = true\nrefreshSearchWindowsInPlayMode = false\nfetchPreview = true\ndefaultFlags = 0\nkeepOpen = false\nqueryFolder = \"Assets\"\nonBoardingDoNotAskAgain = true\nshowPackageIndexes = false\nshowStatusBar = false\nscopes = {\n}\nproviders = {\n\tadb = {\n\t\tactive = false\n\t\tpriority = 2500\n\t\tdefaultAction = null\n\t}\n\tasset = {\n\t\tactive = true\n\t\tpriority = 25\n\t\tdefaultAction = null\n\t}\n\tstore = {\n\t\tactive = true\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tfind = {\n\t\tactive = true\n\t\tpriority = 25\n\t\tdefaultAction = null\n\t}\n\tlog = {\n\t\tactive = false\n\t\tpriority = 210\n\t\tdefaultAction = null\n\t}\n\tpackages = {\n\t\tactive = true\n\t\tpriority = 90\n\t\tdefaultAction = null\n\t}\n\tperformance = {\n\t\tactive = false\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tscene = {\n\t\tactive = true\n\t\tpriority = 50\n\t\tdefaultAction = null\n\t}\n}\nobjectSelectors = {\n}\nrecentSearches = [\n]\nsearchItemFavorites = [\n]\nsavedSearchesSortOrder = 0\nshowSavedSearchPanel = false\nhideTabs = false\nexpandedQueries = [\n]\nqueryBuilder = false\nignoredProperties = \"id;name;classname;imagecontentshash\"\nhelperWidgetCurrentArea = \"all\"\ndisabledIndexers = \"\"\nminIndexVariations = 2\nfindProviderIndexHelper = true"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Analyzer.meta",
    "content": "fileFormatVersion: 2\nguid: 83a7d9ae72b00d244b11062f1befd3a3\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef",
    "content": "{\n    \"name\": \"InAssetFolder\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": [],\n    \"noEngineReferences\": false\n}"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 02a83d3e11a5a9745b46ca562b00be0e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Custom Asmdef/TimTam.cs",
    "content": "using System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\npublic class TimTam : MonoBehaviour\n{\n    // Start is called before the first frame update\n    void Start()\n    {\n        \n    }\n\n    // Update is called once per frame\n    void Update()\n    {\n        \n    }\n}\n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Custom Asmdef/TimTam.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8569e12c481432146a309f64fab7c80c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Custom Asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 051e38478c4283c4ea841b4cd457dae4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Editor/CSProjAssetTests.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing NUnit.Framework;\nusing UnityEditor;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace VSCodeEditor.Runtime_spec.CSProject\n{\n    [TestFixture]\n    [Serializable]\n    public abstract class CleanupTest\n    {\n        [SerializeField]\n        protected IGenerator m_ProjectGeneration;\n\n        [SerializeField]\n        readonly List<string> m_GeneratedFiles = new();\n\n        [SerializeField]\n        readonly List<string> m_DirectoriesToDelete = new();\n\n        [SerializeField]\n        protected string m_CsProjPath;\n\n        [SerializeField]\n        protected DateTime m_LastWritten;\n\n        protected const string k_EmptyCSharpScript =\n            @\"\nusing UnityEngine;\npublic class SimpleCSharpScript : MonoBehaviour\n{\n  void Start()\n  {\n  }\n}\";\n\n        [SetUp]\n        public void SetUp()\n        {\n            var projectDirectory = Directory.GetParent(Application.dataPath).FullName;\n            m_ProjectGeneration = new ProjectGeneration(projectDirectory);\n        }\n\n        [UnityTearDown]\n        protected virtual IEnumerator TearDown()\n        {\n            foreach (var pathToDelete in m_GeneratedFiles)\n            {\n                if (File.Exists(pathToDelete))\n                {\n                    File.Delete(pathToDelete);\n                }\n\n                if (File.Exists(pathToDelete + \".meta\"))\n                {\n                    File.Delete(pathToDelete + \".meta\");\n                }\n            }\n\n            foreach (var directoryToDelete in m_DirectoriesToDelete)\n            {\n                if (Directory.Exists(directoryToDelete))\n                {\n                    Directory.Delete(directoryToDelete, true);\n                    File.Delete(directoryToDelete + \".meta\");\n                }\n            }\n\n            m_GeneratedFiles.Clear();\n            m_DirectoriesToDelete.Clear();\n\n            yield return new RecompileScripts(false);\n        }\n\n        protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content)\n        {\n            var targetFile = Path.Combine(assetPath, fileName);\n            m_GeneratedFiles.Add(targetFile);\n            File.WriteAllText(targetFile, content);\n        }\n\n        protected void CreateFolder(string path)\n        {\n            m_DirectoriesToDelete.Add(path);\n            Directory.CreateDirectory(path);\n        }\n    }\n\n    public class BuildTarget : CleanupTest\n    {\n        [SerializeField]\n        UnityEditor.BuildTarget m_Original;\n\n        protected override IEnumerator TearDown()\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                m_Original\n            );\n            return base.TearDown();\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges(\n            UnityEditor.BuildTarget platformTarget,\n            string platformDefine,\n            UnityEditor.BuildTarget changeTarget,\n            string changeDefine,\n            Action action\n        )\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                platformTarget\n            );\n            CopyScriptToAssetsFolder(\n                Application.dataPath,\n                \"SimpleCSharpScript.cs\",\n                k_EmptyCSharpScript\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            var dir = Directory.GetParent(Application.dataPath).FullName;\n            m_CsProjPath = Path.Combine(dir, \"Assembly-CSharp.csproj\");\n\n            AssertProjectContainsDefine(m_CsProjPath, platformDefine);\n\n            action();\n\n            m_LastWritten = DateTime.Now.AddSeconds(-1);\n            File.SetLastWriteTime(m_CsProjPath, m_LastWritten);\n\n            //switch target to another one than the standalone target for the current platform\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                changeTarget\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten);\n\n            AssertProjectContainsDefine(m_CsProjPath, changeDefine);\n            yield return null;\n        }\n\n        static void AssertProjectContainsDefine(string csProjPath, string expectedDefine)\n        {\n            var content = File.ReadAllText(csProjPath);\n            Assert.IsTrue(\n                Regex.IsMatch(content, $\"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>\")\n            );\n        }\n\n        delegate bool Condition();\n\n        static void WaitForCondition(Condition condition)\n        {\n            var started = DateTime.Now;\n            while (!condition())\n            {\n                if (DateTime.Now - started > k_Timeout)\n                    throw new TimeoutException(\n                        $\"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds\"\n                    );\n                Thread.Sleep(10);\n            }\n        }\n\n        static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5);\n    }\n}\n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Editor/CSProjAssetTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 09b6f746cf9797a4a97e259d45a38ec1\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Editor/RecompileScripts.cs",
    "content": "using System;\nusing System.Collections;\nusing UnityEditor;\nusing UnityEngine.TestTools;\n\npublic class RecompileScripts : IEditModeTestYieldInstruction\n{\n    public RecompileScripts()\n        : this(true) { }\n\n    public RecompileScripts(bool expectScriptCompilation)\n        : this(expectScriptCompilation, true) { }\n\n    public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess)\n    {\n        ExpectScriptCompilation = expectScriptCompilation;\n        ExpectScriptCompilationSuccess = expectScriptCompilationSuccess;\n        ExpectDomainReload = true;\n    }\n\n    public bool ExpectDomainReload { get; }\n    public bool ExpectedPlaymodeState { get; }\n    public bool ExpectScriptCompilation { get; }\n    public bool ExpectScriptCompilationSuccess { get; }\n    public static RecompileScripts Current { get; private set; }\n\n    public IEnumerator Perform()\n    {\n        Current = this;\n\n        AssetDatabase.Refresh();\n\n        if (ExpectScriptCompilation && !EditorApplication.isCompiling)\n        {\n            Current = null;\n            throw new Exception(\"Editor does not need to recompile scripts\");\n        }\n\n        EditorApplication.UnlockReloadAssemblies();\n\n        while (EditorApplication.isCompiling)\n        {\n            yield return null;\n        }\n\n        Current = null;\n\n        if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed)\n        {\n            EditorApplication.LockReloadAssemblies();\n            throw new Exception(\"Script compilation failed\");\n        }\n    }\n}\n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Editor/RecompileScripts.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 35e5ed6756833644c83c24382f01236b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 8a06cae000d3e064aa6a3530ef8bbabc\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/KoalaExtensionTest.koala",
    "content": ""
  },
  {
    "path": "Projects/2022.3 LTS/Assets/KoalaExtensionTest.koala.meta",
    "content": "fileFormatVersion: 2\nguid: 9972cb3bb6a98ab469a9399f8bc337c6\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Scenes/SampleScene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 705507994}\n  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 1\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_AtlasSize: 1024\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 500\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &705507993\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 705507995}\n  - component: {fileID: 705507994}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &705507994\nLight:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: -1\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.05\n    m_NormalBias: 0.4\n    m_NearPlane: 0.2\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_LightShadowCasterMode: 0\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &705507995\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &963194225\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 963194228}\n  - component: {fileID: 963194227}\n  - component: {fileID: 963194226}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &963194226\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n--- !u!20 &963194227\nCamera:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}\n  m_projectionMatrixMode: 1\n  m_SensorSize: {x: 36, y: 24}\n  m_LensShift: {x: 0, y: 0}\n  m_GateFitMode: 2\n  m_FocalLength: 50\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 1\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &963194228\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 1, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Scenes/SampleScene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 9fc0d4010bbf28b4594072e72b8655ab\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Scenes/SampleSceneSettings.lighting",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!850595691 &4890085278179872738\nLightingSettings:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_Name: SampleSceneSettings\n  serializedVersion: 2\n  m_GIWorkflowMode: 0\n  m_EnableBakedLightmaps: 1\n  m_EnableRealtimeLightmaps: 1\n  m_RealtimeEnvironmentLighting: 1\n  m_BounceScale: 1\n  m_AlbedoBoost: 1\n  m_IndirectOutputScale: 1\n  m_UsingShadowmask: 1\n  m_BakeBackend: 1\n  m_LightmapMaxSize: 1024\n  m_BakeResolution: 40\n  m_Padding: 2\n  m_TextureCompression: 1\n  m_AO: 0\n  m_AOMaxDistance: 1\n  m_CompAOExponent: 1\n  m_CompAOExponentDirect: 0\n  m_ExtractAO: 0\n  m_MixedBakeMode: 2\n  m_LightmapsBakeMode: 1\n  m_FilterMode: 1\n  m_LightmapParameters: {fileID: 0}\n  m_ExportTrainingData: 0\n  m_TrainingDataDestination: TrainingData\n  m_RealtimeResolution: 2\n  m_ForceWhiteAlbedo: 0\n  m_ForceUpdates: 0\n  m_FinalGather: 0\n  m_FinalGatherRayCount: 256\n  m_FinalGatherFiltering: 1\n  m_PVRCulling: 1\n  m_PVRSampling: 1\n  m_PVRDirectSampleCount: 32\n  m_PVRSampleCount: 500\n  m_PVREnvironmentSampleCount: 500\n  m_PVREnvironmentReferencePointCount: 2048\n  m_LightProbeSampleCountMultiplier: 4\n  m_PVRBounces: 2\n  m_PVRRussianRouletteStartBounce: 2\n  m_PVREnvironmentMIS: 0\n  m_PVRFilteringMode: 2\n  m_PVRDenoiserTypeDirect: 0\n  m_PVRDenoiserTypeIndirect: 0\n  m_PVRDenoiserTypeAO: 0\n  m_PVRFilterTypeDirect: 0\n  m_PVRFilterTypeIndirect: 0\n  m_PVRFilterTypeAO: 0\n  m_PVRFilteringGaussRadiusDirect: 1\n  m_PVRFilteringGaussRadiusIndirect: 5\n  m_PVRFilteringGaussRadiusAO: 2\n  m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n  m_PVRFilteringAtrousPositionSigmaIndirect: 2\n  m_PVRFilteringAtrousPositionSigmaAO: 1\n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Scenes/SampleSceneSettings.lighting.meta",
    "content": "fileFormatVersion: 2\nguid: a0eb4567ffade2f47b9fc6e006e4ce91\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Scenes.meta",
    "content": "fileFormatVersion: 2\nguid: 2c4ecd2c3fea48442bfed0ebc5181951\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Test.cs",
    "content": "using UnityEngine;\n\npublic class Test : MonoBehaviour\n{\n    void Start()\n    {\n        TestCode.TestClass.TestMethod();\n    }\n}"
  },
  {
    "path": "Projects/2022.3 LTS/Assets/Test.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8dc025fb3786c0b41a0bb4360be46b9a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2022.3 LTS/Packages/manifest.json",
    "content": "{\n  \"disableProjectUpdate\": true,\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": \"file:../../../com.tsk.ide.vscode\",\n    \"com.tsk.ide.vscodetests\": \"file:../../../com.tsk.ide.vscodetests\",\n    \"com.unity.test-framework\": \"1.3.3\"\n  }\n}\n"
  },
  {
    "path": "Projects/2022.3 LTS/Packages/packages-lock.json",
    "content": "{\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": {\n      \"version\": \"file:../../../com.tsk.ide.vscode\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {}\n    },\n    \"com.tsk.ide.vscodetests\": {\n      \"version\": \"file:../../../com.tsk.ide.vscodetests\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {\n        \"nuget.moq\": \"1.0.0\"\n      }\n    },\n    \"com.unity.ext.nunit\": {\n      \"version\": \"2.0.3\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.test-framework\": {\n      \"version\": \"1.3.3\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.ext.nunit\": \"2.0.3\",\n        \"com.unity.modules.imgui\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.castle-core\": {\n      \"version\": \"1.0.1\",\n      \"depth\": 2,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.moq\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"nuget.castle-core\": \"1.0.1\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.modules.imgui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.jsonserialize\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    }\n  }\n}\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/AudioManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  m_Volume: 1\n  Rolloff Scale: 1\n  Doppler Factor: 1\n  Default Speaker Mode: 2\n  m_SampleRate: 0\n  m_DSPBufferSize: 1024\n  m_VirtualVoiceCount: 512\n  m_RealVoiceCount: 32\n  m_SpatializerPlugin: \n  m_AmbisonicDecoderPlugin: \n  m_DisableAudio: 0\n  m_VirtualizeEffects: 1\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/ClusterInputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/DynamicsManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_Gravity: {x: 0, y: -9.81, z: 0}\n  m_DefaultMaterial: {fileID: 0}\n  m_BounceThreshold: 2\n  m_SleepThreshold: 0.005\n  m_DefaultContactOffset: 0.01\n  m_DefaultSolverIterations: 6\n  m_DefaultSolverVelocityIterations: 1\n  m_QueriesHitBackfaces: 0\n  m_QueriesHitTriggers: 1\n  m_EnableAdaptiveForce: 0\n  m_ClothInterCollisionDistance: 0\n  m_ClothInterCollisionStiffness: 0\n  m_ContactsGeneration: 1\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n  m_AutoSimulation: 1\n  m_AutoSyncTransforms: 0\n  m_ReuseCollisionCallbacks: 0\n  m_ClothInterCollisionSettingsToggle: 0\n  m_ContactPairsMode: 0\n  m_BroadphaseType: 0\n  m_WorldBounds:\n    m_Center: {x: 0, y: 0, z: 0}\n    m_Extent: {x: 250, y: 250, z: 250}\n  m_WorldSubdivisions: 8\n  m_FrictionType: 0\n  m_EnableEnhancedDeterminism: 0\n  m_EnableUnifiedHeightmaps: 1\n  m_DefaultMaxAngluarSpeed: 7\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/EditorBuildSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Scenes: []\n  m_configObjects: {}\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/EditorSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 7\n  m_ExternalVersionControlSupport: Hidden Meta Files\n  m_SerializationMode: 2\n  m_LineEndingsForNewScripts: 2\n  m_DefaultBehaviorMode: 0\n  m_PrefabRegularEnvironment: {fileID: 0}\n  m_PrefabUIEnvironment: {fileID: 0}\n  m_SpritePackerMode: 0\n  m_SpritePackerPaddingPower: 1\n  m_EtcTextureCompressorBehavior: 1\n  m_EtcTextureFastCompressor: 1\n  m_EtcTextureNormalCompressor: 2\n  m_EtcTextureBestCompressor: 4\n  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp\n  m_ProjectGenerationRootNamespace: \n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n  m_EnableTextureStreamingInEditMode: 0\n  m_EnableTextureStreamingInPlayMode: 1\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/GraphicsSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 12\n  m_Deferred:\n    m_Mode: 1\n    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}\n  m_DeferredReflections:\n    m_Mode: 1\n    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}\n  m_ScreenSpaceShadows:\n    m_Mode: 1\n    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}\n  m_LegacyDeferred:\n    m_Mode: 1\n    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}\n  m_DepthNormals:\n    m_Mode: 1\n    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}\n  m_MotionVectors:\n    m_Mode: 1\n    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}\n  m_LightHalo:\n    m_Mode: 1\n    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}\n  m_LensFlare:\n    m_Mode: 1\n    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}\n  m_AlwaysIncludedShaders:\n  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}\n  m_PreloadedShaders: []\n  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,\n    type: 0}\n  m_CustomRenderPipeline: {fileID: 0}\n  m_TransparencySortMode: 0\n  m_TransparencySortAxis: {x: 0, y: 0, z: 1}\n  m_DefaultRenderingPath: 1\n  m_DefaultMobileRenderingPath: 1\n  m_TierSettings: []\n  m_LightmapStripping: 0\n  m_FogStripping: 0\n  m_InstancingStripping: 0\n  m_LightmapKeepPlain: 1\n  m_LightmapKeepDirCombined: 1\n  m_LightmapKeepDynamicPlain: 1\n  m_LightmapKeepDynamicDirCombined: 1\n  m_LightmapKeepShadowMask: 1\n  m_LightmapKeepSubtractive: 1\n  m_FogKeepLinear: 1\n  m_FogKeepExp: 1\n  m_FogKeepExp2: 1\n  m_AlbedoSwatchInfos: []\n  m_LightsUseLinearIntensity: 0\n  m_LightsUseColorTemperature: 0\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/InputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Axes:\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: left\n    positiveButton: right\n    altNegativeButton: a\n    altPositiveButton: d\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: down\n    positiveButton: up\n    altNegativeButton: s\n    altPositiveButton: w\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left ctrl\n    altNegativeButton: \n    altPositiveButton: mouse 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left alt\n    altNegativeButton: \n    altPositiveButton: mouse 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left shift\n    altNegativeButton: \n    altPositiveButton: mouse 2\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: space\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse X\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse Y\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse ScrollWheel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 2\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 0\n    type: 2\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 1\n    type: 2\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 0\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 1\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 2\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 3\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: return\n    altNegativeButton: \n    altPositiveButton: joystick button 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: enter\n    altNegativeButton: \n    altPositiveButton: space\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Cancel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: escape\n    altNegativeButton: \n    altPositiveButton: joystick button 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/MemorySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!387306366 &1\nMemorySettings:\n  m_ObjectHideFlags: 0\n  m_EditorMemorySettings:\n    m_MainAllocatorBlockSize: -1\n    m_ThreadAllocatorBlockSize: -1\n    m_MainGfxBlockSize: -1\n    m_ThreadGfxBlockSize: -1\n    m_CacheBlockSize: -1\n    m_TypetreeBlockSize: -1\n    m_ProfilerBlockSize: -1\n    m_ProfilerEditorBlockSize: -1\n    m_BucketAllocatorGranularity: -1\n    m_BucketAllocatorBucketsCount: -1\n    m_BucketAllocatorBlockSize: -1\n    m_BucketAllocatorBlockCount: -1\n    m_ProfilerBucketAllocatorGranularity: -1\n    m_ProfilerBucketAllocatorBucketsCount: -1\n    m_ProfilerBucketAllocatorBlockSize: -1\n    m_ProfilerBucketAllocatorBlockCount: -1\n    m_TempAllocatorSizeMain: -1\n    m_JobTempAllocatorBlockSize: -1\n    m_BackgroundJobTempAllocatorBlockSize: -1\n    m_JobTempAllocatorReducedBlockSize: -1\n    m_TempAllocatorSizeGIBakingWorker: -1\n    m_TempAllocatorSizeNavMeshWorker: -1\n    m_TempAllocatorSizeAudioWorker: -1\n    m_TempAllocatorSizeCloudWorker: -1\n    m_TempAllocatorSizeGfx: -1\n    m_TempAllocatorSizeJobWorker: -1\n    m_TempAllocatorSizeBackgroundWorker: -1\n    m_TempAllocatorSizePreloadManager: -1\n  m_PlatformMemorySettings: {}\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/NavMeshAreas.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  areas:\n  - name: Walkable\n    cost: 1\n  - name: Not Walkable\n    cost: 1\n  - name: Jump\n    cost: 2\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  m_LastAgentTypeID: -887442657\n  m_Settings:\n  - serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.75\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_SettingNames:\n  - Humanoid\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/PackageManagerSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_EnablePreReleasePackages: 0\n  m_EnablePackageDependencies: 0\n  m_AdvancedSettingsExpanded: 1\n  m_ScopedRegistriesSettingsExpanded: 1\n  m_SeeAllPackageVersions: 0\n  oneTimeWarningShown: 0\n  m_Registries:\n  - m_Id: main\n    m_Name: \n    m_Url: https://packages.unity.com\n    m_Scopes: []\n    m_IsDefault: 1\n    m_Capabilities: 7\n    m_ConfigSource: 0\n  m_UserSelectedRegistryName: \n  m_UserAddingNewScopedRegistry: 0\n  m_RegistryInfoDraft:\n    m_Modified: 0\n    m_ErrorMessage: \n    m_UserModificationsInstanceId: -856\n    m_OriginalInstanceId: -858\n  m_LoadAssets: 0\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/Physics2DSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_Gravity: {x: 0, y: -9.81}\n  m_DefaultMaterial: {fileID: 0}\n  m_VelocityIterations: 8\n  m_PositionIterations: 3\n  m_VelocityThreshold: 1\n  m_MaxLinearCorrection: 0.2\n  m_MaxAngularCorrection: 8\n  m_MaxTranslationSpeed: 100\n  m_MaxRotationSpeed: 360\n  m_BaumgarteScale: 0.2\n  m_BaumgarteTimeOfImpactScale: 0.75\n  m_TimeToSleep: 0.5\n  m_LinearSleepTolerance: 0.01\n  m_AngularSleepTolerance: 2\n  m_DefaultContactOffset: 0.01\n  m_JobOptions:\n    serializedVersion: 2\n    useMultithreading: 0\n    useConsistencySorting: 0\n    m_InterpolationPosesPerJob: 100\n    m_NewContactsPerJob: 30\n    m_CollideContactsPerJob: 100\n    m_ClearFlagsPerJob: 200\n    m_ClearBodyForcesPerJob: 200\n    m_SyncDiscreteFixturesPerJob: 50\n    m_SyncContinuousFixturesPerJob: 50\n    m_FindNearestContactsPerJob: 100\n    m_UpdateTriggerContactsPerJob: 100\n    m_IslandSolverCostThreshold: 100\n    m_IslandSolverBodyCostScale: 1\n    m_IslandSolverContactCostScale: 10\n    m_IslandSolverJointCostScale: 10\n    m_IslandSolverBodiesPerJob: 50\n    m_IslandSolverContactsPerJob: 50\n  m_AutoSimulation: 1\n  m_QueriesHitTriggers: 1\n  m_QueriesStartInColliders: 1\n  m_CallbacksOnDisable: 1\n  m_ReuseCollisionCallbacks: 0\n  m_AutoSyncTransforms: 0\n  m_AlwaysShowColliders: 0\n  m_ShowColliderSleep: 1\n  m_ShowColliderContacts: 0\n  m_ShowColliderAABB: 0\n  m_ContactArrowScale: 0.2\n  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}\n  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}\n  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}\n  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/PresetManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  m_DefaultList: []\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/ProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 23\n  productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 4\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: DefaultCompany\n  productName: TestVSCodePackage\n  defaultCursor: {fileID: 0}\n  cursorHotspot: {x: 0, y: 0}\n  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}\n  m_ShowUnitySplashScreen: 1\n  m_ShowUnitySplashLogo: 1\n  m_SplashScreenOverlayOpacity: 1\n  m_SplashScreenAnimation: 1\n  m_SplashScreenLogoStyle: 1\n  m_SplashScreenDrawMode: 0\n  m_SplashScreenBackgroundAnimationZoom: 1\n  m_SplashScreenLogoAnimationZoom: 1\n  m_SplashScreenBackgroundLandscapeAspect: 1\n  m_SplashScreenBackgroundPortraitAspect: 1\n  m_SplashScreenBackgroundLandscapeUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenBackgroundPortraitUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenLogos: []\n  m_VirtualRealitySplashScreen: {fileID: 0}\n  m_HolographicTrackingLossScreen: {fileID: 0}\n  defaultScreenWidth: 1024\n  defaultScreenHeight: 768\n  defaultScreenWidthWeb: 960\n  defaultScreenHeightWeb: 600\n  m_StereoRenderingPath: 0\n  m_ActiveColorSpace: 0\n  m_MTRendering: 1\n  mipStripping: 0\n  numberOfMipsStripped: 0\n  m_StackTraceTypes: 010000000100000001000000010000000100000001000000\n  iosShowActivityIndicatorOnLoading: -1\n  androidShowActivityIndicatorOnLoading: -1\n  iosUseCustomAppBackgroundBehavior: 0\n  iosAllowHTTPDownload: 1\n  allowedAutorotateToPortrait: 1\n  allowedAutorotateToPortraitUpsideDown: 1\n  allowedAutorotateToLandscapeRight: 1\n  allowedAutorotateToLandscapeLeft: 1\n  useOSAutorotation: 1\n  use32BitDisplayBuffer: 1\n  preserveFramebufferAlpha: 0\n  disableDepthAndStencilBuffers: 0\n  androidStartInFullscreen: 1\n  androidRenderOutsideSafeArea: 0\n  androidUseSwappy: 0\n  androidBlitType: 0\n  androidResizableWindow: 0\n  androidDefaultWindowWidth: 1920\n  androidDefaultWindowHeight: 1080\n  androidMinimumWindowWidth: 400\n  androidMinimumWindowHeight: 300\n  androidFullscreenMode: 1\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 1\n  captureSingleScreen: 0\n  muteOtherAudioSources: 0\n  Prepare IOS For Recording: 0\n  Force IOS Speakers When Recording: 0\n  deferSystemGesturesMode: 0\n  hideHomeButton: 0\n  submitAnalytics: 1\n  usePlayerLog: 1\n  bakeCollisionMeshes: 0\n  forceSingleInstance: 0\n  useFlipModelSwapchain: 1\n  resizableWindow: 0\n  useMacAppStoreValidation: 0\n  macAppStoreCategory: public.app-category.games\n  gpuSkinning: 1\n  xboxPIXTextureCapture: 0\n  xboxEnableAvatar: 0\n  xboxEnableKinect: 0\n  xboxEnableKinectAutoTracking: 0\n  xboxEnableFitness: 0\n  visibleInBackground: 1\n  allowFullscreenSwitch: 1\n  fullscreenMode: 1\n  xboxSpeechDB: 0\n  xboxEnableHeadOrientation: 0\n  xboxEnableGuest: 0\n  xboxEnablePIXSampling: 0\n  metalFramebufferOnly: 0\n  xboxOneResolution: 0\n  xboxOneSResolution: 0\n  xboxOneXResolution: 3\n  xboxOneMonoLoggingLevel: 0\n  xboxOneLoggingLevel: 1\n  xboxOneDisableEsram: 0\n  xboxOneEnableTypeOptimization: 0\n  xboxOnePresentImmediateThreshold: 0\n  switchQueueCommandMemory: 0\n  switchQueueControlMemory: 0\n  switchQueueComputeMemory: 262144\n  switchNVNShaderPoolsGranularity: 33554432\n  switchNVNDefaultPoolsGranularity: 16777216\n  switchNVNOtherPoolsGranularity: 16777216\n  switchNVNMaxPublicTextureIDCount: 0\n  switchNVNMaxPublicSamplerIDCount: 0\n  stadiaPresentMode: 0\n  stadiaTargetFramerate: 0\n  vulkanNumSwapchainBuffers: 3\n  vulkanEnableSetSRGBWrite: 0\n  vulkanEnablePreTransform: 0\n  vulkanEnableLateAcquireNextImage: 0\n  vulkanEnableCommandBufferRecycling: 1\n  m_SupportedAspectRatios:\n    4:3: 1\n    5:4: 1\n    16:10: 1\n    16:9: 1\n    Others: 1\n  bundleVersion: 0.1\n  preloadedAssets: []\n  metroInputSource: 0\n  wsaTransparentSwapchain: 0\n  m_HolographicPauseOnTrackingLoss: 1\n  xboxOneDisableKinectGpuReservation: 0\n  xboxOneEnable7thCore: 0\n  vrSettings:\n    enable360StereoCapture: 0\n  isWsaHolographicRemotingEnabled: 0\n  enableFrameTimingStats: 0\n  enableOpenGLProfilerGPURecorders: 1\n  useHDRDisplay: 0\n  D3DHDRBitDepth: 0\n  m_ColorGamuts: 00000000\n  targetPixelDensity: 30\n  resolutionScalingMode: 0\n  resetResolutionOnWindowResize: 0\n  androidSupportedAspectRatio: 1\n  androidMaxAspectRatio: 2.1\n  applicationIdentifier:\n    Standalone: com.DefaultCompany.TestVSCodePackage\n  buildNumber:\n    Standalone: 0\n    iPhone: 0\n    tvOS: 0\n  overrideDefaultApplicationIdentifier: 0\n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 22\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 0\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  APKExpansionFiles: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 1\n  VertexChannelCompressionMask: 4054\n  iPhoneSdkVersion: 988\n  iOSTargetOSVersionString: 11.0\n  tvOSSdkVersion: 0\n  tvOSRequireExtendedGameController: 0\n  tvOSTargetOSVersionString: 11.0\n  uIPrerenderedIcon: 0\n  uIRequiresPersistentWiFi: 0\n  uIRequiresFullScreen: 1\n  uIStatusBarHidden: 1\n  uIExitOnSuspend: 0\n  uIStatusBarStyle: 0\n  appleTVSplashScreen: {fileID: 0}\n  appleTVSplashScreen2x: {fileID: 0}\n  tvOSSmallIconLayers: []\n  tvOSSmallIconLayers2x: []\n  tvOSLargeIconLayers: []\n  tvOSLargeIconLayers2x: []\n  tvOSTopShelfImageLayers: []\n  tvOSTopShelfImageLayers2x: []\n  tvOSTopShelfImageWideLayers: []\n  tvOSTopShelfImageWideLayers2x: []\n  iOSLaunchScreenType: 0\n  iOSLaunchScreenPortrait: {fileID: 0}\n  iOSLaunchScreenLandscape: {fileID: 0}\n  iOSLaunchScreenBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreenFillPct: 100\n  iOSLaunchScreenSize: 100\n  iOSLaunchScreenCustomXibPath: \n  iOSLaunchScreeniPadType: 0\n  iOSLaunchScreeniPadImage: {fileID: 0}\n  iOSLaunchScreeniPadBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreeniPadFillPct: 100\n  iOSLaunchScreeniPadSize: 100\n  iOSLaunchScreeniPadCustomXibPath: \n  iOSLaunchScreenCustomStoryboardPath: \n  iOSLaunchScreeniPadCustomStoryboardPath: \n  iOSDeviceRequirements: []\n  iOSURLSchemes: []\n  macOSURLSchemes: []\n  iOSBackgroundModes: 0\n  iOSMetalForceHardShadows: 0\n  metalEditorSupport: 1\n  metalAPIValidation: 1\n  iOSRenderExtraFrameOnPause: 0\n  iosCopyPluginsCodeInsteadOfSymlink: 0\n  appleDeveloperTeamID: \n  iOSManualSigningProvisioningProfileID: \n  tvOSManualSigningProvisioningProfileID: \n  iOSManualSigningProvisioningProfileType: 0\n  tvOSManualSigningProvisioningProfileType: 0\n  appleEnableAutomaticSigning: 0\n  iOSRequireARKit: 0\n  iOSAutomaticallyDetectAndAddCapabilities: 1\n  appleEnableProMotion: 0\n  shaderPrecisionModel: 0\n  clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea\n  templatePackageId: com.unity.template.3d@1.0.8\n  templateDefaultScene: Assets/Scenes/SampleScene.unity\n  useCustomMainManifest: 0\n  useCustomLauncherManifest: 0\n  useCustomMainGradleTemplate: 0\n  useCustomLauncherGradleManifest: 0\n  useCustomBaseGradleTemplate: 0\n  useCustomGradlePropertiesTemplate: 0\n  useCustomProguardFile: 0\n  AndroidTargetArchitectures: 5\n  AndroidTargetDevices: 0\n  AndroidSplashScreenScale: 0\n  androidSplashScreen: {fileID: 0}\n  AndroidKeystoreName: '{inproject}: '\n  AndroidKeyaliasName: \n  AndroidBuildApkPerCpuArchitecture: 0\n  AndroidTVCompatibility: 0\n  AndroidIsGame: 1\n  AndroidEnableTango: 0\n  androidEnableBanner: 1\n  androidUseLowAccuracyLocation: 0\n  androidUseCustomKeystore: 0\n  m_AndroidBanners:\n  - width: 320\n    height: 180\n    banner: {fileID: 0}\n  androidGamepadSupportLevel: 0\n  chromeosInputEmulation: 1\n  AndroidMinifyWithR8: 0\n  AndroidMinifyRelease: 0\n  AndroidMinifyDebug: 0\n  AndroidValidateAppBundleSize: 1\n  AndroidAppBundleSizeToValidate: 100\n  m_BuildTargetIcons: []\n  m_BuildTargetPlatformIcons:\n  - m_BuildTarget: Android\n    m_Icons:\n    - m_Textures: []\n      m_Width: 432\n      m_Height: 432\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 324\n      m_Height: 324\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 216\n      m_Height: 216\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 162\n      m_Height: 162\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 108\n      m_Height: 108\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 81\n      m_Height: 81\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 0\n      m_SubKind: \n  m_BuildTargetBatching:\n  - m_BuildTarget: Standalone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: tvOS\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: Android\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: iPhone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: WebGL\n    m_StaticBatching: 0\n    m_DynamicBatching: 0\n  m_BuildTargetShaderSettings: []\n  m_BuildTargetGraphicsJobs:\n  - m_BuildTarget: WindowsStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MacStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LinuxStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AndroidPlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: iOSSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS5Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreXboxOneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreScarlettSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: Switch\n    m_GraphicsJobs: 0\n  - m_BuildTarget: WebGLSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MetroSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AppleTVSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: BJMSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LuminSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: CloudRendering\n    m_GraphicsJobs: 0\n  - m_BuildTarget: EmbeddedLinux\n    m_GraphicsJobs: 0\n  m_BuildTargetGraphicsJobMode:\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobMode: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobMode: 0\n  m_BuildTargetGraphicsAPIs:\n  - m_BuildTarget: AndroidPlayer\n    m_APIs: 0b00000008000000\n    m_Automatic: 0\n  - m_BuildTarget: iOSSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: AppleTVSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: WebGLSupport\n    m_APIs: 0b000000\n    m_Automatic: 1\n  m_BuildTargetVRSettings:\n  - m_BuildTarget: Standalone\n    m_Enabled: 0\n    m_Devices:\n    - Oculus\n    - OpenVR\n  m_DefaultShaderChunkSizeInMB: 16\n  m_DefaultShaderChunkCount: 0\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  openGLRequireES32: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    Android: 1\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality: []\n  m_BuildTargetGroupLightmapSettings: []\n  m_BuildTargetNormalMapEncoding: []\n  m_BuildTargetDefaultTextureCompressionFormat: []\n  playModeTestRunnerEnabled: 0\n  runPlayModeTestAsEditModeTest: 0\n  actionOnDotNetUnhandledException: 1\n  enableInternalProfiler: 0\n  logObjCUncaughtExceptions: 1\n  enableCrashReportAPI: 0\n  cameraUsageDescription: \n  locationUsageDescription: \n  microphoneUsageDescription: \n  bluetoothUsageDescription: \n  switchNMETAOverride: \n  switchNetLibKey: \n  switchSocketMemoryPoolSize: 6144\n  switchSocketAllocatorPoolSize: 128\n  switchSocketConcurrencyLimit: 14\n  switchScreenResolutionBehavior: 2\n  switchUseCPUProfiler: 0\n  switchUseGOLDLinker: 0\n  switchLTOSetting: 0\n  switchApplicationID: 0x01004b9000490000\n  switchNSODependencies: \n  switchTitleNames_0: \n  switchTitleNames_1: \n  switchTitleNames_2: \n  switchTitleNames_3: \n  switchTitleNames_4: \n  switchTitleNames_5: \n  switchTitleNames_6: \n  switchTitleNames_7: \n  switchTitleNames_8: \n  switchTitleNames_9: \n  switchTitleNames_10: \n  switchTitleNames_11: \n  switchTitleNames_12: \n  switchTitleNames_13: \n  switchTitleNames_14: \n  switchTitleNames_15: \n  switchPublisherNames_0: \n  switchPublisherNames_1: \n  switchPublisherNames_2: \n  switchPublisherNames_3: \n  switchPublisherNames_4: \n  switchPublisherNames_5: \n  switchPublisherNames_6: \n  switchPublisherNames_7: \n  switchPublisherNames_8: \n  switchPublisherNames_9: \n  switchPublisherNames_10: \n  switchPublisherNames_11: \n  switchPublisherNames_12: \n  switchPublisherNames_13: \n  switchPublisherNames_14: \n  switchPublisherNames_15: \n  switchIcons_0: {fileID: 0}\n  switchIcons_1: {fileID: 0}\n  switchIcons_2: {fileID: 0}\n  switchIcons_3: {fileID: 0}\n  switchIcons_4: {fileID: 0}\n  switchIcons_5: {fileID: 0}\n  switchIcons_6: {fileID: 0}\n  switchIcons_7: {fileID: 0}\n  switchIcons_8: {fileID: 0}\n  switchIcons_9: {fileID: 0}\n  switchIcons_10: {fileID: 0}\n  switchIcons_11: {fileID: 0}\n  switchIcons_12: {fileID: 0}\n  switchIcons_13: {fileID: 0}\n  switchIcons_14: {fileID: 0}\n  switchIcons_15: {fileID: 0}\n  switchSmallIcons_0: {fileID: 0}\n  switchSmallIcons_1: {fileID: 0}\n  switchSmallIcons_2: {fileID: 0}\n  switchSmallIcons_3: {fileID: 0}\n  switchSmallIcons_4: {fileID: 0}\n  switchSmallIcons_5: {fileID: 0}\n  switchSmallIcons_6: {fileID: 0}\n  switchSmallIcons_7: {fileID: 0}\n  switchSmallIcons_8: {fileID: 0}\n  switchSmallIcons_9: {fileID: 0}\n  switchSmallIcons_10: {fileID: 0}\n  switchSmallIcons_11: {fileID: 0}\n  switchSmallIcons_12: {fileID: 0}\n  switchSmallIcons_13: {fileID: 0}\n  switchSmallIcons_14: {fileID: 0}\n  switchSmallIcons_15: {fileID: 0}\n  switchManualHTML: \n  switchAccessibleURLs: \n  switchLegalInformation: \n  switchMainThreadStackSize: 1048576\n  switchPresenceGroupId: \n  switchLogoHandling: 0\n  switchReleaseVersion: 0\n  switchDisplayVersion: 1.0.0\n  switchStartupUserAccount: 0\n  switchTouchScreenUsage: 0\n  switchSupportedLanguagesMask: 0\n  switchLogoType: 0\n  switchApplicationErrorCodeCategory: \n  switchUserAccountSaveDataSize: 0\n  switchUserAccountSaveDataJournalSize: 0\n  switchApplicationAttribute: 0\n  switchCardSpecSize: -1\n  switchCardSpecClock: -1\n  switchRatingsMask: 0\n  switchRatingsInt_0: 0\n  switchRatingsInt_1: 0\n  switchRatingsInt_2: 0\n  switchRatingsInt_3: 0\n  switchRatingsInt_4: 0\n  switchRatingsInt_5: 0\n  switchRatingsInt_6: 0\n  switchRatingsInt_7: 0\n  switchRatingsInt_8: 0\n  switchRatingsInt_9: 0\n  switchRatingsInt_10: 0\n  switchRatingsInt_11: 0\n  switchRatingsInt_12: 0\n  switchLocalCommunicationIds_0: \n  switchLocalCommunicationIds_1: \n  switchLocalCommunicationIds_2: \n  switchLocalCommunicationIds_3: \n  switchLocalCommunicationIds_4: \n  switchLocalCommunicationIds_5: \n  switchLocalCommunicationIds_6: \n  switchLocalCommunicationIds_7: \n  switchParentalControl: 0\n  switchAllowsScreenshot: 1\n  switchAllowsVideoCapturing: 1\n  switchAllowsRuntimeAddOnContentInstall: 0\n  switchDataLossConfirmation: 0\n  switchUserAccountLockEnabled: 0\n  switchSystemResourceMemory: 16777216\n  switchSupportedNpadStyles: 3\n  switchNativeFsCacheSize: 32\n  switchIsHoldTypeHorizontal: 0\n  switchSupportedNpadCount: 8\n  switchSocketConfigEnabled: 0\n  switchTcpInitialSendBufferSize: 32\n  switchTcpInitialReceiveBufferSize: 64\n  switchTcpAutoSendBufferSizeMax: 256\n  switchTcpAutoReceiveBufferSizeMax: 256\n  switchUdpSendBufferSize: 9\n  switchUdpReceiveBufferSize: 42\n  switchSocketBufferEfficiency: 4\n  switchSocketInitializeEnabled: 1\n  switchNetworkInterfaceManagerInitializeEnabled: 1\n  switchPlayerConnectionEnabled: 1\n  switchUseNewStyleFilepaths: 0\n  switchUseMicroSleepForYield: 1\n  switchEnableRamDiskSupport: 0\n  switchMicroSleepForYieldTime: 25\n  switchRamDiskSpaceSize: 12\n  ps4NPAgeRating: 12\n  ps4NPTitleSecret: \n  ps4NPTrophyPackPath: \n  ps4ParentalLevel: 11\n  ps4ContentID: ED1633-NPXX51362_00-0000000000000000\n  ps4Category: 0\n  ps4MasterVersion: 01.00\n  ps4AppVersion: 01.00\n  ps4AppType: 0\n  ps4ParamSfxPath: \n  ps4VideoOutPixelFormat: 0\n  ps4VideoOutInitialWidth: 1920\n  ps4VideoOutBaseModeInitialWidth: 1920\n  ps4VideoOutReprojectionRate: 60\n  ps4PronunciationXMLPath: \n  ps4PronunciationSIGPath: \n  ps4BackgroundImagePath: \n  ps4StartupImagePath: \n  ps4StartupImagesFolder: \n  ps4IconImagesFolder: \n  ps4SaveDataImagePath: \n  ps4SdkOverride: \n  ps4BGMPath: \n  ps4ShareFilePath: \n  ps4ShareOverlayImagePath: \n  ps4PrivacyGuardImagePath: \n  ps4ExtraSceSysFile: \n  ps4NPtitleDatPath: \n  ps4RemotePlayKeyAssignment: -1\n  ps4RemotePlayKeyMappingDir: \n  ps4PlayTogetherPlayerCount: 0\n  ps4EnterButtonAssignment: 1\n  ps4ApplicationParam1: 0\n  ps4ApplicationParam2: 0\n  ps4ApplicationParam3: 0\n  ps4ApplicationParam4: 0\n  ps4DownloadDataSize: 0\n  ps4GarlicHeapSize: 2048\n  ps4ProGarlicHeapSize: 2560\n  playerPrefsMaxSize: 32768\n  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ\n  ps4pnSessions: 1\n  ps4pnPresence: 1\n  ps4pnFriends: 1\n  ps4pnGameCustomData: 1\n  playerPrefsSupport: 0\n  enableApplicationExit: 0\n  resetTempFolder: 1\n  restrictedAudioUsageRights: 0\n  ps4UseResolutionFallback: 0\n  ps4ReprojectionSupport: 0\n  ps4UseAudio3dBackend: 0\n  ps4UseLowGarlicFragmentationMode: 1\n  ps4SocialScreenEnabled: 0\n  ps4ScriptOptimizationLevel: 0\n  ps4Audio3dVirtualSpeakerCount: 14\n  ps4attribCpuUsage: 0\n  ps4PatchPkgPath: \n  ps4PatchLatestPkgPath: \n  ps4PatchChangeinfoPath: \n  ps4PatchDayOne: 0\n  ps4attribUserManagement: 0\n  ps4attribMoveSupport: 0\n  ps4attrib3DSupport: 0\n  ps4attribShareSupport: 0\n  ps4attribExclusiveVR: 0\n  ps4disableAutoHideSplash: 0\n  ps4videoRecordingFeaturesUsed: 0\n  ps4contentSearchFeaturesUsed: 0\n  ps4CompatibilityPS5: 0\n  ps4AllowPS5Detection: 0\n  ps4GPU800MHz: 1\n  ps4attribEyeToEyeDistanceSettingVR: 0\n  ps4IncludedModules: []\n  ps4attribVROutputEnabled: 0\n  monoEnv: \n  splashScreenBackgroundSourceLandscape: {fileID: 0}\n  splashScreenBackgroundSourcePortrait: {fileID: 0}\n  blurSplashScreenBackground: 1\n  spritePackerPolicy: \n  webGLMemorySize: 16\n  webGLExceptionSupport: 1\n  webGLNameFilesAsHashes: 0\n  webGLDataCaching: 1\n  webGLDebugSymbols: 0\n  webGLEmscriptenArgs: \n  webGLModulesDirectory: \n  webGLTemplate: APPLICATION:Default\n  webGLAnalyzeBuildSize: 0\n  webGLUseEmbeddedResources: 0\n  webGLCompressionFormat: 1\n  webGLWasmArithmeticExceptions: 0\n  webGLLinkerTarget: 1\n  webGLThreadsSupport: 0\n  webGLDecompressionFallback: 0\n  webGLPowerPreference: 2\n  scriptingDefineSymbols:\n    Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE\n  additionalCompilerArguments: {}\n  platformArchitecture: {}\n  scriptingBackend:\n    Standalone: 0\n  il2cppCompilerConfiguration: {}\n  managedStrippingLevel: {}\n  incrementalIl2cppBuild: {}\n  suppressCommonWarnings: 1\n  allowUnsafeCode: 0\n  useDeterministicCompilation: 1\n  enableRoslynAnalyzers: 1\n  selectedPlatform: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 1\n  gcIncremental: 0\n  assemblyVersionValidation: 1\n  gcWBarrierValidation: 0\n  apiCompatibilityLevelPerPlatform:\n    Standalone: 6\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: Template_3D\n  metroPackageVersion: \n  metroCertificatePath: \n  metroCertificatePassword: \n  metroCertificateSubject: \n  metroCertificateIssuer: \n  metroCertificateNotAfter: 0000000000000000\n  metroApplicationDescription: Template_3D\n  wsaImages: {}\n  metroTileShortName: \n  metroTileShowName: 0\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroSupportStreamingInstall: 0\n  metroLastRequiredScene: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 2\n  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}\n  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,\n    a: 1}\n  metroSplashScreenUseBackgroundColor: 0\n  platformCapabilities: {}\n  metroTargetDeviceFamilies: {}\n  metroFTAName: \n  metroFTAFileTypes: []\n  metroProtocolName: \n  vcxProjDefaultLanguage: \n  XboxOneProductId: \n  XboxOneUpdateKey: \n  XboxOneSandboxId: \n  XboxOneContentId: \n  XboxOneTitleId: \n  XboxOneSCId: \n  XboxOneGameOsOverridePath: \n  XboxOnePackagingOverridePath: \n  XboxOneAppManifestOverridePath: \n  XboxOneVersion: 1.0.0.0\n  XboxOnePackageEncryption: 0\n  XboxOnePackageUpdateGranularity: 2\n  XboxOneDescription: \n  XboxOneLanguage:\n  - enus\n  XboxOneCapability: []\n  XboxOneGameRating: {}\n  XboxOneIsContentPackage: 0\n  XboxOneEnhancedXboxCompatibilityMode: 0\n  XboxOneEnableGPUVariability: 0\n  XboxOneSockets: {}\n  XboxOneSplashScreen: {fileID: 0}\n  XboxOneAllowedProductIds: []\n  XboxOnePersistentLocalStorageSize: 0\n  XboxOneXTitleMemory: 8\n  XboxOneOverrideIdentityName: \n  XboxOneOverrideIdentityPublisher: \n  vrEditorSettings: {}\n  cloudServicesEnabled:\n    UNet: 1\n  luminIcon:\n    m_Name: \n    m_ModelFolderPath: \n    m_PortalFolderPath: \n  luminCert:\n    m_CertPath: \n    m_SignPackage: 1\n  luminIsChannelApp: 0\n  luminVersion:\n    m_VersionCode: 1\n    m_VersionName: \n  apiCompatibilityLevel: 6\n  activeInputHandler: 0\n  windowsGamepadBackendHint: 0\n  cloudProjectId: \n  framebufferDepthMemorylessMode: 0\n  qualitySettingsNames: []\n  projectName: \n  organizationId: \n  cloudEnabled: 0\n  legacyClampBlendShapeWeights: 1\n  playerDataPath: \n  forceSRGBBlit: 1\n  virtualTexturingSupportEnabled: 0\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2022.3.20f1\nm_EditorVersionWithRevision: 2022.3.20f1 (61c2feb0970d)\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/QualitySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m_CurrentQuality: 5\n  m_QualitySettings:\n  - serializedVersion: 2\n    name: Very Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 15\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 1\n    textureQuality: 1\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.3\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.4\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 16\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Medium\n    pixelLightCount: 1\n    shadows: 1\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 1\n    lodBias: 0.7\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 64\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: High\n    pixelLightCount: 2\n    shadows: 2\n    shadowResolution: 1\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 40\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 256\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Very High\n    pixelLightCount: 3\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 70\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1.5\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 1024\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Ultra\n    pixelLightCount: 4\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 4\n    shadowDistance: 150\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 2\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4096\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  m_PerPlatformDefaultQuality:\n    Android: 2\n    Lumin: 5\n    Nintendo 3DS: 5\n    Nintendo Switch: 5\n    PS4: 5\n    PSP2: 2\n    Standalone: 5\n    WebGL: 3\n    Windows Store Apps: 5\n    XboxOne: 5\n    iPhone: 2\n    tvOS: 2\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Default\n  - TransparentFX\n  - Ignore Raycast\n  - \n  - Water\n  - UI\n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  m_SortingLayers:\n  - name: Default\n    uniqueID: 0\n    locked: 0\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/TimeManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!5 &1\nTimeManager:\n  m_ObjectHideFlags: 0\n  Fixed Timestep: 0.02\n  Maximum Allowed Timestep: 0.33333334\n  m_TimeScale: 1\n  Maximum Particle Timestep: 0.03\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/UnityConnectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 1\n  m_Enabled: 0\n  m_TestMode: 0\n  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events\n  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events\n  m_ConfigUrl: https://config.uca.cloud.unity3d.com\n  m_DashboardUrl: https://dashboard.unity3d.com\n  m_TestInitMode: 0\n  CrashReportingSettings:\n    m_EventUrl: https://perf-events.cloud.unity3d.com\n    m_Enabled: 0\n    m_LogBufferSize: 10\n    m_CaptureEditorExceptions: 1\n  UnityPurchasingSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n  UnityAnalyticsSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n    m_InitializeOnStartup: 1\n    m_PackageRequiringCoreStatsPresent: 0\n  UnityAdsSettings:\n    m_Enabled: 0\n    m_InitializeOnStartup: 1\n    m_TestMode: 0\n    m_IosGameId: \n    m_AndroidGameId: \n    m_GameIds: {}\n    m_GameId: \n  PerformanceReportingSettings:\n    m_Enabled: 0\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/VFXManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fileID: 0}\n  m_CopyBufferShader: {fileID: 0}\n  m_SortShader: {fileID: 0}\n  m_RenderPipeSettingsPath: \n  m_FixedTimeStep: 0.016666668\n  m_MaxDeltaTime: 0.05\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/VersionControlSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!890905787 &1\nVersionControlSettings:\n  m_ObjectHideFlags: 0\n  m_Mode: Visible Meta Files\n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n"
  },
  {
    "path": "Projects/2022.3 LTS/ProjectSettings/XRSettings.asset",
    "content": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n        \"False\",\n        \"False\"\n    ]\n}"
  },
  {
    "path": "Projects/2022.3 LTS/UserSettings/EditorUserSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!162 &1\nEditorUserSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_ConfigSettings:\n    RecentlyUsedSceneGuid-0:\n      value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a\n      flags: 0\n    vcSharedLogLevel:\n      value: 0d5e400f0650\n      flags: 0\n  m_VCAutomaticAdd: 1\n  m_VCDebugCom: 0\n  m_VCDebugCmd: 0\n  m_VCDebugOut: 0\n  m_SemanticMergeMode: 2\n  m_DesiredImportWorkerCount: 4\n  m_StandbyImportWorkerCount: 2\n  m_IdleImportWorkerShutdownDelay: 60000\n  m_VCShowFailedCheckout: 1\n  m_VCOverwriteFailedCheckoutAssets: 1\n  m_VCProjectOverlayIcons: 1\n  m_VCHierarchyOverlayIcons: 1\n  m_VCOtherOverlayIcons: 1\n  m_VCAllowAsyncUpdate: 1\n  m_ArtifactGarbageCollection: 1\n"
  },
  {
    "path": "Projects/2022.3 LTS/UserSettings/Search.index",
    "content": "{\n    \"name\": \"Assets\",\n    \"roots\": [\"Assets\"],\n    \"includes\": [],\n    \"excludes\": [],\n    \"options\": {\n        \"types\": true,\n        \"properties\": true,\n        \"extended\": false,\n        \"dependencies\": false\n    },\n    \"baseScore\": 999\n}"
  },
  {
    "path": "Projects/2022.3 LTS/UserSettings/Search.settings",
    "content": "trackSelection = true\nrefreshSearchWindowsInPlayMode = false\nfetchPreview = true\ndefaultFlags = 0\nkeepOpen = false\nqueryFolder = \"Assets\"\nonBoardingDoNotAskAgain = true\nshowPackageIndexes = false\nshowStatusBar = false\nscopes = {\n}\nproviders = {\n\tpackages = {\n\t\tactive = true\n\t\tpriority = 90\n\t\tdefaultAction = null\n\t}\n\tprofilermarkers = {\n\t\tactive = false\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tstore = {\n\t\tactive = true\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tlog = {\n\t\tactive = false\n\t\tpriority = 210\n\t\tdefaultAction = null\n\t}\n\tscene = {\n\t\tactive = true\n\t\tpriority = 50\n\t\tdefaultAction = null\n\t}\n\tfind = {\n\t\tactive = true\n\t\tpriority = 25\n\t\tdefaultAction = null\n\t}\n\tperformance = {\n\t\tactive = false\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tadb = {\n\t\tactive = false\n\t\tpriority = 2500\n\t\tdefaultAction = null\n\t}\n\tasset = {\n\t\tactive = true\n\t\tpriority = 25\n\t\tdefaultAction = null\n\t}\n}\nobjectSelectors = {\n}\nrecentSearches = [\n]\nsearchItemFavorites = [\n]\nsavedSearchesSortOrder = 0\nshowSavedSearchPanel = false\nhideTabs = false\nexpandedQueries = [\n]\nqueryBuilder = false\nignoredProperties = \"id;name;classname;imagecontentshash\"\nhelperWidgetCurrentArea = \"all\"\ndisabledIndexers = \"\"\nminIndexVariations = 2\nfindProviderIndexHelper = true"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Analyzer.meta",
    "content": "fileFormatVersion: 2\nguid: 63c5480704ebff0429abf8879f31898b\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef",
    "content": "{\n    \"name\": \"InAssetFolder\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": [],\n    \"noEngineReferences\": false\n}"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 02a83d3e11a5a9745b46ca562b00be0e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Custom Asmdef/TimTam.cs",
    "content": "using System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\npublic class TimTam : MonoBehaviour\n{\n    // Start is called before the first frame update\n    void Start()\n    {\n        \n    }\n\n    // Update is called once per frame\n    void Update()\n    {\n        \n    }\n}\n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Custom Asmdef/TimTam.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8569e12c481432146a309f64fab7c80c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Custom Asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 051e38478c4283c4ea841b4cd457dae4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Editor/CSProjAssetTests.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing NUnit.Framework;\nusing UnityEditor;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace VSCodeEditor.Runtime_spec.CSProject\n{\n    [TestFixture]\n    [Serializable]\n    public abstract class CleanupTest\n    {\n        [SerializeField]\n        protected IGenerator m_ProjectGeneration;\n\n        [SerializeField]\n        readonly List<string> m_GeneratedFiles = new();\n\n        [SerializeField]\n        readonly List<string> m_DirectoriesToDelete = new();\n\n        [SerializeField]\n        protected string m_CsProjPath;\n\n        [SerializeField]\n        protected DateTime m_LastWritten;\n\n        protected const string k_EmptyCSharpScript =\n            @\"\nusing UnityEngine;\npublic class SimpleCSharpScript : MonoBehaviour\n{\n  void Start()\n  {\n  }\n}\";\n\n        [SetUp]\n        public void SetUp()\n        {\n            var projectDirectory = Directory.GetParent(Application.dataPath).FullName;\n            m_ProjectGeneration = new ProjectGeneration(projectDirectory);\n        }\n\n        [UnityTearDown]\n        protected virtual IEnumerator TearDown()\n        {\n            foreach (var pathToDelete in m_GeneratedFiles)\n            {\n                if (File.Exists(pathToDelete))\n                {\n                    File.Delete(pathToDelete);\n                }\n\n                if (File.Exists(pathToDelete + \".meta\"))\n                {\n                    File.Delete(pathToDelete + \".meta\");\n                }\n            }\n\n            foreach (var directoryToDelete in m_DirectoriesToDelete)\n            {\n                if (Directory.Exists(directoryToDelete))\n                {\n                    Directory.Delete(directoryToDelete, true);\n                    File.Delete(directoryToDelete + \".meta\");\n                }\n            }\n\n            m_GeneratedFiles.Clear();\n            m_DirectoriesToDelete.Clear();\n\n            yield return new RecompileScripts(false);\n        }\n\n        protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content)\n        {\n            var targetFile = Path.Combine(assetPath, fileName);\n            m_GeneratedFiles.Add(targetFile);\n            File.WriteAllText(targetFile, content);\n        }\n\n        protected void CreateFolder(string path)\n        {\n            m_DirectoriesToDelete.Add(path);\n            Directory.CreateDirectory(path);\n        }\n    }\n\n    public class BuildTarget : CleanupTest\n    {\n        [SerializeField]\n        UnityEditor.BuildTarget m_Original;\n\n        protected override IEnumerator TearDown()\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                m_Original\n            );\n            return base.TearDown();\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChanges_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () => { }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneWindows64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneOSX;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                UnityEditor.BuildTarget.StandaloneWindows64,\n                \"PLATFORM_STANDALONE_WIN\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        [UnityTest]\n        public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux()\n        {\n            m_Original = UnityEditor.BuildTarget.StandaloneLinux64;\n            return AssertSynchronizedWhenActiveBuildTargetChanges(\n                UnityEditor.BuildTarget.StandaloneLinux64,\n                \"PLATFORM_STANDALONE_LINUX\",\n                UnityEditor.BuildTarget.StandaloneOSX,\n                \"PLATFORM_STANDALONE_OSX\",\n                () =>\n                {\n                    CopyScriptToAssetsFolder(Application.dataPath, \"SimpleCSharpScript2.cs\", \" \");\n                }\n            );\n        }\n\n        IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges(\n            UnityEditor.BuildTarget platformTarget,\n            string platformDefine,\n            UnityEditor.BuildTarget changeTarget,\n            string changeDefine,\n            Action action\n        )\n        {\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                platformTarget\n            );\n            CopyScriptToAssetsFolder(\n                Application.dataPath,\n                \"SimpleCSharpScript.cs\",\n                k_EmptyCSharpScript\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            var dir = Directory.GetParent(Application.dataPath).FullName;\n            m_CsProjPath = Path.Combine(dir, \"Assembly-CSharp.csproj\");\n\n            AssertProjectContainsDefine(m_CsProjPath, platformDefine);\n\n            action();\n\n            m_LastWritten = DateTime.Now.AddSeconds(-1);\n            File.SetLastWriteTime(m_CsProjPath, m_LastWritten);\n\n            //switch target to another one than the standalone target for the current platform\n            EditorUserBuildSettings.SwitchActiveBuildTarget(\n                BuildTargetGroup.Standalone,\n                changeTarget\n            );\n\n            yield return new RecompileScripts(true);\n            m_ProjectGeneration.Sync();\n\n            WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten);\n\n            AssertProjectContainsDefine(m_CsProjPath, changeDefine);\n            yield return null;\n        }\n\n        static void AssertProjectContainsDefine(string csProjPath, string expectedDefine)\n        {\n            var content = File.ReadAllText(csProjPath);\n            Assert.IsTrue(\n                Regex.IsMatch(content, $\"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>\")\n            );\n        }\n\n        delegate bool Condition();\n\n        static void WaitForCondition(Condition condition)\n        {\n            var started = DateTime.Now;\n            while (!condition())\n            {\n                if (DateTime.Now - started > k_Timeout)\n                    throw new TimeoutException(\n                        $\"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds\"\n                    );\n                Thread.Sleep(10);\n            }\n        }\n\n        static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5);\n    }\n}\n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Editor/CSProjAssetTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 09b6f746cf9797a4a97e259d45a38ec1\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Editor/RecompileScripts.cs",
    "content": "using System;\nusing System.Collections;\nusing UnityEditor;\nusing UnityEngine.TestTools;\n\npublic class RecompileScripts : IEditModeTestYieldInstruction\n{\n    public RecompileScripts()\n        : this(true) { }\n\n    public RecompileScripts(bool expectScriptCompilation)\n        : this(expectScriptCompilation, true) { }\n\n    public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess)\n    {\n        ExpectScriptCompilation = expectScriptCompilation;\n        ExpectScriptCompilationSuccess = expectScriptCompilationSuccess;\n        ExpectDomainReload = true;\n    }\n\n    public bool ExpectDomainReload { get; }\n    public bool ExpectedPlaymodeState { get; }\n    public bool ExpectScriptCompilation { get; }\n    public bool ExpectScriptCompilationSuccess { get; }\n    public static RecompileScripts Current { get; private set; }\n\n    public IEnumerator Perform()\n    {\n        Current = this;\n\n        AssetDatabase.Refresh();\n\n        if (ExpectScriptCompilation && !EditorApplication.isCompiling)\n        {\n            Current = null;\n            throw new Exception(\"Editor does not need to recompile scripts\");\n        }\n\n        EditorApplication.UnlockReloadAssemblies();\n\n        while (EditorApplication.isCompiling)\n        {\n            yield return null;\n        }\n\n        Current = null;\n\n        if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed)\n        {\n            EditorApplication.LockReloadAssemblies();\n            throw new Exception(\"Script compilation failed\");\n        }\n    }\n}\n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Editor/RecompileScripts.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 35e5ed6756833644c83c24382f01236b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 8a06cae000d3e064aa6a3530ef8bbabc\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/KoalaExtensionTest.koala",
    "content": ""
  },
  {
    "path": "Projects/2023.1 Latest/Assets/KoalaExtensionTest.koala.meta",
    "content": "fileFormatVersion: 2\nguid: 9972cb3bb6a98ab469a9399f8bc337c6\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Scenes/SampleScene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 705507994}\n  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 1\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_AtlasSize: 1024\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 500\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &705507993\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 705507995}\n  - component: {fileID: 705507994}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &705507994\nLight:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: -1\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.05\n    m_NormalBias: 0.4\n    m_NearPlane: 0.2\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_LightShadowCasterMode: 0\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &705507995\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 705507993}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &963194225\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 963194228}\n  - component: {fileID: 963194227}\n  - component: {fileID: 963194226}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &963194226\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n--- !u!20 &963194227\nCamera:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}\n  m_projectionMatrixMode: 1\n  m_SensorSize: {x: 36, y: 24}\n  m_LensShift: {x: 0, y: 0}\n  m_GateFitMode: 2\n  m_FocalLength: 50\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 1\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &963194228\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 963194225}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 1, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Scenes/SampleScene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 9fc0d4010bbf28b4594072e72b8655ab\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Scenes/SampleSceneSettings.lighting",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!850595691 &4890085278179872738\nLightingSettings:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_Name: SampleSceneSettings\n  serializedVersion: 2\n  m_GIWorkflowMode: 0\n  m_EnableBakedLightmaps: 1\n  m_EnableRealtimeLightmaps: 1\n  m_RealtimeEnvironmentLighting: 1\n  m_BounceScale: 1\n  m_AlbedoBoost: 1\n  m_IndirectOutputScale: 1\n  m_UsingShadowmask: 1\n  m_BakeBackend: 1\n  m_LightmapMaxSize: 1024\n  m_BakeResolution: 40\n  m_Padding: 2\n  m_TextureCompression: 1\n  m_AO: 0\n  m_AOMaxDistance: 1\n  m_CompAOExponent: 1\n  m_CompAOExponentDirect: 0\n  m_ExtractAO: 0\n  m_MixedBakeMode: 2\n  m_LightmapsBakeMode: 1\n  m_FilterMode: 1\n  m_LightmapParameters: {fileID: 0}\n  m_ExportTrainingData: 0\n  m_TrainingDataDestination: TrainingData\n  m_RealtimeResolution: 2\n  m_ForceWhiteAlbedo: 0\n  m_ForceUpdates: 0\n  m_FinalGather: 0\n  m_FinalGatherRayCount: 256\n  m_FinalGatherFiltering: 1\n  m_PVRCulling: 1\n  m_PVRSampling: 1\n  m_PVRDirectSampleCount: 32\n  m_PVRSampleCount: 500\n  m_PVREnvironmentSampleCount: 500\n  m_PVREnvironmentReferencePointCount: 2048\n  m_LightProbeSampleCountMultiplier: 4\n  m_PVRBounces: 2\n  m_PVRRussianRouletteStartBounce: 2\n  m_PVREnvironmentMIS: 0\n  m_PVRFilteringMode: 2\n  m_PVRDenoiserTypeDirect: 0\n  m_PVRDenoiserTypeIndirect: 0\n  m_PVRDenoiserTypeAO: 0\n  m_PVRFilterTypeDirect: 0\n  m_PVRFilterTypeIndirect: 0\n  m_PVRFilterTypeAO: 0\n  m_PVRFilteringGaussRadiusDirect: 1\n  m_PVRFilteringGaussRadiusIndirect: 5\n  m_PVRFilteringGaussRadiusAO: 2\n  m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n  m_PVRFilteringAtrousPositionSigmaIndirect: 2\n  m_PVRFilteringAtrousPositionSigmaAO: 1\n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Scenes/SampleSceneSettings.lighting.meta",
    "content": "fileFormatVersion: 2\nguid: a0eb4567ffade2f47b9fc6e006e4ce91\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Scenes.meta",
    "content": "fileFormatVersion: 2\nguid: 2c4ecd2c3fea48442bfed0ebc5181951\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Test.cs",
    "content": "using UnityEngine;\n\npublic class Test : MonoBehaviour\n{\n    void Start()\n    {\n        TestCode.TestClass.TestMethod();\n    }\n}"
  },
  {
    "path": "Projects/2023.1 Latest/Assets/Test.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8dc025fb3786c0b41a0bb4360be46b9a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Projects/2023.1 Latest/Packages/manifest.json",
    "content": "{\n  \"disableProjectUpdate\": true,\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": \"file:../../../com.tsk.ide.vscode\",\n    \"com.tsk.ide.vscodetests\": \"file:../../../com.tsk.ide.vscodetests\",\n    \"com.unity.test-framework\": \"1.3.4\"\n  }\n}\n"
  },
  {
    "path": "Projects/2023.1 Latest/Packages/packages-lock.json",
    "content": "{\n  \"dependencies\": {\n    \"com.tsk.ide.vscode\": {\n      \"version\": \"file:../../../com.tsk.ide.vscode\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {}\n    },\n    \"com.tsk.ide.vscodetests\": {\n      \"version\": \"file:../../../com.tsk.ide.vscodetests\",\n      \"depth\": 0,\n      \"source\": \"local\",\n      \"dependencies\": {\n        \"nuget.moq\": \"1.0.0\"\n      }\n    },\n    \"com.unity.ext.nunit\": {\n      \"version\": \"2.0.3\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.test-framework\": {\n      \"version\": \"1.3.4\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.ext.nunit\": \"2.0.3\",\n        \"com.unity.modules.imgui\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.castle-core\": {\n      \"version\": \"1.0.1\",\n      \"depth\": 2,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"nuget.moq\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"nuget.castle-core\": \"1.0.1\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.modules.imgui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.jsonserialize\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    }\n  }\n}\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/AudioManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  m_Volume: 1\n  Rolloff Scale: 1\n  Doppler Factor: 1\n  Default Speaker Mode: 2\n  m_SampleRate: 0\n  m_DSPBufferSize: 1024\n  m_VirtualVoiceCount: 512\n  m_RealVoiceCount: 32\n  m_SpatializerPlugin: \n  m_AmbisonicDecoderPlugin: \n  m_DisableAudio: 0\n  m_VirtualizeEffects: 1\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/ClusterInputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/DynamicsManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_Gravity: {x: 0, y: -9.81, z: 0}\n  m_DefaultMaterial: {fileID: 0}\n  m_BounceThreshold: 2\n  m_SleepThreshold: 0.005\n  m_DefaultContactOffset: 0.01\n  m_DefaultSolverIterations: 6\n  m_DefaultSolverVelocityIterations: 1\n  m_QueriesHitBackfaces: 0\n  m_QueriesHitTriggers: 1\n  m_EnableAdaptiveForce: 0\n  m_ClothInterCollisionDistance: 0\n  m_ClothInterCollisionStiffness: 0\n  m_ContactsGeneration: 1\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n  m_AutoSimulation: 1\n  m_AutoSyncTransforms: 0\n  m_ReuseCollisionCallbacks: 0\n  m_ClothInterCollisionSettingsToggle: 0\n  m_ContactPairsMode: 0\n  m_BroadphaseType: 0\n  m_WorldBounds:\n    m_Center: {x: 0, y: 0, z: 0}\n    m_Extent: {x: 250, y: 250, z: 250}\n  m_WorldSubdivisions: 8\n  m_FrictionType: 0\n  m_EnableEnhancedDeterminism: 0\n  m_EnableUnifiedHeightmaps: 1\n  m_DefaultMaxAngluarSpeed: 7\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/EditorBuildSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Scenes: []\n  m_configObjects: {}\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/EditorSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 7\n  m_ExternalVersionControlSupport: Hidden Meta Files\n  m_SerializationMode: 2\n  m_LineEndingsForNewScripts: 2\n  m_DefaultBehaviorMode: 0\n  m_PrefabRegularEnvironment: {fileID: 0}\n  m_PrefabUIEnvironment: {fileID: 0}\n  m_SpritePackerMode: 0\n  m_SpritePackerPaddingPower: 1\n  m_EtcTextureCompressorBehavior: 1\n  m_EtcTextureFastCompressor: 1\n  m_EtcTextureNormalCompressor: 2\n  m_EtcTextureBestCompressor: 4\n  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp\n  m_ProjectGenerationRootNamespace: \n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n  m_EnableTextureStreamingInEditMode: 0\n  m_EnableTextureStreamingInPlayMode: 1\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/GraphicsSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 12\n  m_Deferred:\n    m_Mode: 1\n    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}\n  m_DeferredReflections:\n    m_Mode: 1\n    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}\n  m_ScreenSpaceShadows:\n    m_Mode: 1\n    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}\n  m_LegacyDeferred:\n    m_Mode: 1\n    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}\n  m_DepthNormals:\n    m_Mode: 1\n    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}\n  m_MotionVectors:\n    m_Mode: 1\n    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}\n  m_LightHalo:\n    m_Mode: 1\n    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}\n  m_LensFlare:\n    m_Mode: 1\n    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}\n  m_AlwaysIncludedShaders:\n  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}\n  m_PreloadedShaders: []\n  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,\n    type: 0}\n  m_CustomRenderPipeline: {fileID: 0}\n  m_TransparencySortMode: 0\n  m_TransparencySortAxis: {x: 0, y: 0, z: 1}\n  m_DefaultRenderingPath: 1\n  m_DefaultMobileRenderingPath: 1\n  m_TierSettings: []\n  m_LightmapStripping: 0\n  m_FogStripping: 0\n  m_InstancingStripping: 0\n  m_LightmapKeepPlain: 1\n  m_LightmapKeepDirCombined: 1\n  m_LightmapKeepDynamicPlain: 1\n  m_LightmapKeepDynamicDirCombined: 1\n  m_LightmapKeepShadowMask: 1\n  m_LightmapKeepSubtractive: 1\n  m_FogKeepLinear: 1\n  m_FogKeepExp: 1\n  m_FogKeepExp2: 1\n  m_AlbedoSwatchInfos: []\n  m_LightsUseLinearIntensity: 0\n  m_LightsUseColorTemperature: 0\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/InputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Axes:\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: left\n    positiveButton: right\n    altNegativeButton: a\n    altPositiveButton: d\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: down\n    positiveButton: up\n    altNegativeButton: s\n    altPositiveButton: w\n    gravity: 3\n    dead: 0.001\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left ctrl\n    altNegativeButton: \n    altPositiveButton: mouse 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left alt\n    altNegativeButton: \n    altPositiveButton: mouse 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left shift\n    altNegativeButton: \n    altPositiveButton: mouse 2\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: space\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse X\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse Y\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse ScrollWheel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: 0.1\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 2\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 0\n    type: 2\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0.19\n    sensitivity: 1\n    snap: 0\n    invert: 1\n    type: 2\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 0\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 1\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 2\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 3\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: return\n    altNegativeButton: \n    altPositiveButton: joystick button 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: enter\n    altNegativeButton: \n    altPositiveButton: space\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Cancel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: escape\n    altNegativeButton: \n    altPositiveButton: joystick button 1\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/MemorySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!387306366 &1\nMemorySettings:\n  m_ObjectHideFlags: 0\n  m_EditorMemorySettings:\n    m_MainAllocatorBlockSize: -1\n    m_ThreadAllocatorBlockSize: -1\n    m_MainGfxBlockSize: -1\n    m_ThreadGfxBlockSize: -1\n    m_CacheBlockSize: -1\n    m_TypetreeBlockSize: -1\n    m_ProfilerBlockSize: -1\n    m_ProfilerEditorBlockSize: -1\n    m_BucketAllocatorGranularity: -1\n    m_BucketAllocatorBucketsCount: -1\n    m_BucketAllocatorBlockSize: -1\n    m_BucketAllocatorBlockCount: -1\n    m_ProfilerBucketAllocatorGranularity: -1\n    m_ProfilerBucketAllocatorBucketsCount: -1\n    m_ProfilerBucketAllocatorBlockSize: -1\n    m_ProfilerBucketAllocatorBlockCount: -1\n    m_TempAllocatorSizeMain: -1\n    m_JobTempAllocatorBlockSize: -1\n    m_BackgroundJobTempAllocatorBlockSize: -1\n    m_JobTempAllocatorReducedBlockSize: -1\n    m_TempAllocatorSizeGIBakingWorker: -1\n    m_TempAllocatorSizeNavMeshWorker: -1\n    m_TempAllocatorSizeAudioWorker: -1\n    m_TempAllocatorSizeCloudWorker: -1\n    m_TempAllocatorSizeGfx: -1\n    m_TempAllocatorSizeJobWorker: -1\n    m_TempAllocatorSizeBackgroundWorker: -1\n    m_TempAllocatorSizePreloadManager: -1\n  m_PlatformMemorySettings: {}\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/NavMeshAreas.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  areas:\n  - name: Walkable\n    cost: 1\n  - name: Not Walkable\n    cost: 1\n  - name: Jump\n    cost: 2\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  m_LastAgentTypeID: -887442657\n  m_Settings:\n  - serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.75\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_SettingNames:\n  - Humanoid\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/PackageManagerSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_EnablePreReleasePackages: 0\n  m_EnablePackageDependencies: 0\n  m_AdvancedSettingsExpanded: 1\n  m_ScopedRegistriesSettingsExpanded: 1\n  m_SeeAllPackageVersions: 0\n  oneTimeWarningShown: 0\n  m_Registries:\n  - m_Id: main\n    m_Name: \n    m_Url: https://packages.unity.com\n    m_Scopes: []\n    m_IsDefault: 1\n    m_Capabilities: 7\n    m_ConfigSource: 0\n  m_UserSelectedRegistryName: \n  m_UserAddingNewScopedRegistry: 0\n  m_RegistryInfoDraft:\n    m_Modified: 0\n    m_ErrorMessage: \n    m_UserModificationsInstanceId: -856\n    m_OriginalInstanceId: -858\n  m_LoadAssets: 0\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/Physics2DSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_Gravity: {x: 0, y: -9.81}\n  m_DefaultMaterial: {fileID: 0}\n  m_VelocityIterations: 8\n  m_PositionIterations: 3\n  m_VelocityThreshold: 1\n  m_MaxLinearCorrection: 0.2\n  m_MaxAngularCorrection: 8\n  m_MaxTranslationSpeed: 100\n  m_MaxRotationSpeed: 360\n  m_BaumgarteScale: 0.2\n  m_BaumgarteTimeOfImpactScale: 0.75\n  m_TimeToSleep: 0.5\n  m_LinearSleepTolerance: 0.01\n  m_AngularSleepTolerance: 2\n  m_DefaultContactOffset: 0.01\n  m_JobOptions:\n    serializedVersion: 2\n    useMultithreading: 0\n    useConsistencySorting: 0\n    m_InterpolationPosesPerJob: 100\n    m_NewContactsPerJob: 30\n    m_CollideContactsPerJob: 100\n    m_ClearFlagsPerJob: 200\n    m_ClearBodyForcesPerJob: 200\n    m_SyncDiscreteFixturesPerJob: 50\n    m_SyncContinuousFixturesPerJob: 50\n    m_FindNearestContactsPerJob: 100\n    m_UpdateTriggerContactsPerJob: 100\n    m_IslandSolverCostThreshold: 100\n    m_IslandSolverBodyCostScale: 1\n    m_IslandSolverContactCostScale: 10\n    m_IslandSolverJointCostScale: 10\n    m_IslandSolverBodiesPerJob: 50\n    m_IslandSolverContactsPerJob: 50\n  m_AutoSimulation: 1\n  m_QueriesHitTriggers: 1\n  m_QueriesStartInColliders: 1\n  m_CallbacksOnDisable: 1\n  m_ReuseCollisionCallbacks: 0\n  m_AutoSyncTransforms: 0\n  m_AlwaysShowColliders: 0\n  m_ShowColliderSleep: 1\n  m_ShowColliderContacts: 0\n  m_ShowColliderAABB: 0\n  m_ContactArrowScale: 0.2\n  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}\n  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}\n  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}\n  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/PresetManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  m_DefaultList: []\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/ProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 27\n  productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 4\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: DefaultCompany\n  productName: TestVSCodePackage\n  defaultCursor: {fileID: 0}\n  cursorHotspot: {x: 0, y: 0}\n  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}\n  m_ShowUnitySplashScreen: 1\n  m_ShowUnitySplashLogo: 1\n  m_SplashScreenOverlayOpacity: 1\n  m_SplashScreenAnimation: 1\n  m_SplashScreenLogoStyle: 1\n  m_SplashScreenDrawMode: 0\n  m_SplashScreenBackgroundAnimationZoom: 1\n  m_SplashScreenLogoAnimationZoom: 1\n  m_SplashScreenBackgroundLandscapeAspect: 1\n  m_SplashScreenBackgroundPortraitAspect: 1\n  m_SplashScreenBackgroundLandscapeUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenBackgroundPortraitUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenLogos: []\n  m_VirtualRealitySplashScreen: {fileID: 0}\n  m_HolographicTrackingLossScreen: {fileID: 0}\n  defaultScreenWidth: 1024\n  defaultScreenHeight: 768\n  defaultScreenWidthWeb: 960\n  defaultScreenHeightWeb: 600\n  m_StereoRenderingPath: 0\n  m_ActiveColorSpace: 0\n  m_SpriteBatchVertexThreshold: 300\n  m_MTRendering: 1\n  mipStripping: 0\n  numberOfMipsStripped: 0\n  numberOfMipsStrippedPerMipmapLimitGroup: {}\n  m_StackTraceTypes: 010000000100000001000000010000000100000001000000\n  iosShowActivityIndicatorOnLoading: -1\n  androidShowActivityIndicatorOnLoading: -1\n  iosUseCustomAppBackgroundBehavior: 0\n  allowedAutorotateToPortrait: 1\n  allowedAutorotateToPortraitUpsideDown: 1\n  allowedAutorotateToLandscapeRight: 1\n  allowedAutorotateToLandscapeLeft: 1\n  useOSAutorotation: 1\n  use32BitDisplayBuffer: 1\n  preserveFramebufferAlpha: 0\n  disableDepthAndStencilBuffers: 0\n  androidStartInFullscreen: 1\n  androidRenderOutsideSafeArea: 0\n  androidUseSwappy: 0\n  androidBlitType: 0\n  androidResizableWindow: 0\n  androidDefaultWindowWidth: 1920\n  androidDefaultWindowHeight: 1080\n  androidMinimumWindowWidth: 400\n  androidMinimumWindowHeight: 300\n  androidFullscreenMode: 1\n  androidApplicationEntry: 1\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 1\n  captureSingleScreen: 0\n  muteOtherAudioSources: 0\n  Prepare IOS For Recording: 0\n  Force IOS Speakers When Recording: 0\n  deferSystemGesturesMode: 0\n  hideHomeButton: 0\n  submitAnalytics: 1\n  usePlayerLog: 1\n  bakeCollisionMeshes: 0\n  forceSingleInstance: 0\n  useFlipModelSwapchain: 1\n  resizableWindow: 0\n  useMacAppStoreValidation: 0\n  macAppStoreCategory: public.app-category.games\n  gpuSkinning: 1\n  meshDeformation: 0\n  xboxPIXTextureCapture: 0\n  xboxEnableAvatar: 0\n  xboxEnableKinect: 0\n  xboxEnableKinectAutoTracking: 0\n  xboxEnableFitness: 0\n  visibleInBackground: 1\n  allowFullscreenSwitch: 1\n  fullscreenMode: 1\n  xboxSpeechDB: 0\n  xboxEnableHeadOrientation: 0\n  xboxEnableGuest: 0\n  xboxEnablePIXSampling: 0\n  metalFramebufferOnly: 0\n  xboxOneResolution: 0\n  xboxOneSResolution: 0\n  xboxOneXResolution: 3\n  xboxOneMonoLoggingLevel: 0\n  xboxOneLoggingLevel: 1\n  xboxOneDisableEsram: 0\n  xboxOneEnableTypeOptimization: 0\n  xboxOnePresentImmediateThreshold: 0\n  switchQueueCommandMemory: 0\n  switchQueueControlMemory: 0\n  switchQueueComputeMemory: 262144\n  switchNVNShaderPoolsGranularity: 33554432\n  switchNVNDefaultPoolsGranularity: 16777216\n  switchNVNOtherPoolsGranularity: 16777216\n  switchGpuScratchPoolGranularity: 2097152\n  switchAllowGpuScratchShrinking: 0\n  switchNVNMaxPublicTextureIDCount: 0\n  switchNVNMaxPublicSamplerIDCount: 0\n  switchNVNGraphicsFirmwareMemory: 32\n  vulkanNumSwapchainBuffers: 3\n  vulkanEnableSetSRGBWrite: 0\n  vulkanEnablePreTransform: 0\n  vulkanEnableLateAcquireNextImage: 0\n  vulkanEnableCommandBufferRecycling: 1\n  loadStoreDebugModeEnabled: 0\n  bundleVersion: 0.1\n  preloadedAssets: []\n  metroInputSource: 0\n  wsaTransparentSwapchain: 0\n  m_HolographicPauseOnTrackingLoss: 1\n  xboxOneDisableKinectGpuReservation: 0\n  xboxOneEnable7thCore: 0\n  vrSettings:\n    enable360StereoCapture: 0\n  isWsaHolographicRemotingEnabled: 0\n  enableFrameTimingStats: 0\n  enableOpenGLProfilerGPURecorders: 1\n  useHDRDisplay: 0\n  hdrBitDepth: 0\n  m_ColorGamuts: 00000000\n  targetPixelDensity: 30\n  resolutionScalingMode: 0\n  resetResolutionOnWindowResize: 0\n  androidSupportedAspectRatio: 1\n  androidMaxAspectRatio: 2.1\n  applicationIdentifier:\n    Standalone: com.DefaultCompany.TestVSCodePackage\n  buildNumber:\n    Standalone: 0\n    iPhone: 0\n    tvOS: 0\n  overrideDefaultApplicationIdentifier: 0\n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 22\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 0\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  androidSplitApplicationBinary: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 1\n  strictShaderVariantMatching: 0\n  VertexChannelCompressionMask: 4054\n  iPhoneSdkVersion: 988\n  iOSTargetOSVersionString: 13.0\n  tvOSSdkVersion: 0\n  tvOSRequireExtendedGameController: 0\n  tvOSTargetOSVersionString: 13.0\n  uIPrerenderedIcon: 0\n  uIRequiresPersistentWiFi: 0\n  uIRequiresFullScreen: 1\n  uIStatusBarHidden: 1\n  uIExitOnSuspend: 0\n  uIStatusBarStyle: 0\n  appleTVSplashScreen: {fileID: 0}\n  appleTVSplashScreen2x: {fileID: 0}\n  tvOSSmallIconLayers: []\n  tvOSSmallIconLayers2x: []\n  tvOSLargeIconLayers: []\n  tvOSLargeIconLayers2x: []\n  tvOSTopShelfImageLayers: []\n  tvOSTopShelfImageLayers2x: []\n  tvOSTopShelfImageWideLayers: []\n  tvOSTopShelfImageWideLayers2x: []\n  iOSLaunchScreenType: 0\n  iOSLaunchScreenPortrait: {fileID: 0}\n  iOSLaunchScreenLandscape: {fileID: 0}\n  iOSLaunchScreenBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreenFillPct: 100\n  iOSLaunchScreenSize: 100\n  iOSLaunchScreenCustomXibPath: \n  iOSLaunchScreeniPadType: 0\n  iOSLaunchScreeniPadImage: {fileID: 0}\n  iOSLaunchScreeniPadBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreeniPadFillPct: 100\n  iOSLaunchScreeniPadSize: 100\n  iOSLaunchScreeniPadCustomXibPath: \n  iOSLaunchScreenCustomStoryboardPath: \n  iOSLaunchScreeniPadCustomStoryboardPath: \n  iOSDeviceRequirements: []\n  iOSURLSchemes: []\n  macOSURLSchemes: []\n  iOSBackgroundModes: 0\n  iOSMetalForceHardShadows: 0\n  metalEditorSupport: 1\n  metalAPIValidation: 1\n  iOSRenderExtraFrameOnPause: 0\n  iosCopyPluginsCodeInsteadOfSymlink: 0\n  appleDeveloperTeamID: \n  iOSManualSigningProvisioningProfileID: \n  tvOSManualSigningProvisioningProfileID: \n  iOSManualSigningProvisioningProfileType: 0\n  tvOSManualSigningProvisioningProfileType: 0\n  appleEnableAutomaticSigning: 0\n  iOSRequireARKit: 0\n  iOSAutomaticallyDetectAndAddCapabilities: 1\n  appleEnableProMotion: 0\n  shaderPrecisionModel: 0\n  clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea\n  templatePackageId: com.unity.template.3d@1.0.8\n  templateDefaultScene: Assets/Scenes/SampleScene.unity\n  useCustomMainManifest: 0\n  useCustomLauncherManifest: 0\n  useCustomMainGradleTemplate: 0\n  useCustomLauncherGradleManifest: 0\n  useCustomBaseGradleTemplate: 0\n  useCustomGradlePropertiesTemplate: 0\n  useCustomGradleSettingsTemplate: 0\n  useCustomProguardFile: 0\n  AndroidTargetArchitectures: 5\n  AndroidTargetDevices: 0\n  AndroidSplashScreenScale: 0\n  androidSplashScreen: {fileID: 0}\n  AndroidKeystoreName: '{inproject}: '\n  AndroidKeyaliasName: \n  AndroidEnableArmv9SecurityFeatures: 0\n  AndroidBuildApkPerCpuArchitecture: 0\n  AndroidTVCompatibility: 0\n  AndroidIsGame: 1\n  AndroidEnableTango: 0\n  androidEnableBanner: 1\n  androidUseLowAccuracyLocation: 0\n  androidUseCustomKeystore: 0\n  m_AndroidBanners:\n  - width: 320\n    height: 180\n    banner: {fileID: 0}\n  androidGamepadSupportLevel: 0\n  chromeosInputEmulation: 1\n  AndroidMinifyRelease: 0\n  AndroidMinifyDebug: 0\n  AndroidValidateAppBundleSize: 1\n  AndroidAppBundleSizeToValidate: 100\n  AndroidReportGooglePlayAppDependencies: 1\n  m_BuildTargetIcons: []\n  m_BuildTargetPlatformIcons:\n  - m_BuildTarget: Android\n    m_Icons:\n    - m_Textures: []\n      m_Width: 432\n      m_Height: 432\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 324\n      m_Height: 324\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 216\n      m_Height: 216\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 162\n      m_Height: 162\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 108\n      m_Height: 108\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 81\n      m_Height: 81\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 0\n      m_SubKind: \n  m_BuildTargetBatching:\n  - m_BuildTarget: Standalone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: tvOS\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: Android\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: iPhone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  - m_BuildTarget: WebGL\n    m_StaticBatching: 0\n    m_DynamicBatching: 0\n  m_BuildTargetShaderSettings: []\n  m_BuildTargetGraphicsJobs:\n  - m_BuildTarget: WindowsStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MacStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LinuxStandaloneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AndroidPlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: iOSSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: PS5Player\n    m_GraphicsJobs: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreXboxOneSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: GameCoreScarlettSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: Switch\n    m_GraphicsJobs: 0\n  - m_BuildTarget: WebGLSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: MetroSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: AppleTVSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: BJMSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: LuminSupport\n    m_GraphicsJobs: 0\n  - m_BuildTarget: CloudRendering\n    m_GraphicsJobs: 0\n  - m_BuildTarget: EmbeddedLinux\n    m_GraphicsJobs: 0\n  m_BuildTargetGraphicsJobMode:\n  - m_BuildTarget: PS4Player\n    m_GraphicsJobMode: 0\n  - m_BuildTarget: XboxOnePlayer\n    m_GraphicsJobMode: 0\n  m_BuildTargetGraphicsAPIs:\n  - m_BuildTarget: AndroidPlayer\n    m_APIs: 0b000000\n    m_Automatic: 0\n  - m_BuildTarget: iOSSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: AppleTVSupport\n    m_APIs: 10000000\n    m_Automatic: 1\n  - m_BuildTarget: WebGLSupport\n    m_APIs: 0b000000\n    m_Automatic: 1\n  m_BuildTargetVRSettings:\n  - m_BuildTarget: Standalone\n    m_Enabled: 0\n    m_Devices:\n    - Oculus\n    - OpenVR\n  m_DefaultShaderChunkSizeInMB: 16\n  m_DefaultShaderChunkCount: 0\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  openGLRequireES32: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    Android: 1\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality: []\n  m_BuildTargetGroupHDRCubemapEncodingQuality: []\n  m_BuildTargetGroupLightmapSettings: []\n  m_BuildTargetGroupLoadStoreDebugModeSettings: []\n  m_BuildTargetNormalMapEncoding: []\n  m_BuildTargetDefaultTextureCompressionFormat: []\n  playModeTestRunnerEnabled: 0\n  runPlayModeTestAsEditModeTest: 0\n  actionOnDotNetUnhandledException: 1\n  enableInternalProfiler: 0\n  logObjCUncaughtExceptions: 1\n  enableCrashReportAPI: 0\n  cameraUsageDescription: \n  locationUsageDescription: \n  microphoneUsageDescription: \n  bluetoothUsageDescription: \n  macOSTargetOSVersion: 10.13.0\n  switchNMETAOverride: \n  switchNetLibKey: \n  switchSocketMemoryPoolSize: 6144\n  switchSocketAllocatorPoolSize: 128\n  switchSocketConcurrencyLimit: 14\n  switchScreenResolutionBehavior: 2\n  switchUseCPUProfiler: 0\n  switchUseGOLDLinker: 0\n  switchLTOSetting: 0\n  switchApplicationID: 0x01004b9000490000\n  switchNSODependencies: \n  switchCompilerFlags: \n  switchTitleNames_0: \n  switchTitleNames_1: \n  switchTitleNames_2: \n  switchTitleNames_3: \n  switchTitleNames_4: \n  switchTitleNames_5: \n  switchTitleNames_6: \n  switchTitleNames_7: \n  switchTitleNames_8: \n  switchTitleNames_9: \n  switchTitleNames_10: \n  switchTitleNames_11: \n  switchTitleNames_12: \n  switchTitleNames_13: \n  switchTitleNames_14: \n  switchTitleNames_15: \n  switchPublisherNames_0: \n  switchPublisherNames_1: \n  switchPublisherNames_2: \n  switchPublisherNames_3: \n  switchPublisherNames_4: \n  switchPublisherNames_5: \n  switchPublisherNames_6: \n  switchPublisherNames_7: \n  switchPublisherNames_8: \n  switchPublisherNames_9: \n  switchPublisherNames_10: \n  switchPublisherNames_11: \n  switchPublisherNames_12: \n  switchPublisherNames_13: \n  switchPublisherNames_14: \n  switchPublisherNames_15: \n  switchIcons_0: {fileID: 0}\n  switchIcons_1: {fileID: 0}\n  switchIcons_2: {fileID: 0}\n  switchIcons_3: {fileID: 0}\n  switchIcons_4: {fileID: 0}\n  switchIcons_5: {fileID: 0}\n  switchIcons_6: {fileID: 0}\n  switchIcons_7: {fileID: 0}\n  switchIcons_8: {fileID: 0}\n  switchIcons_9: {fileID: 0}\n  switchIcons_10: {fileID: 0}\n  switchIcons_11: {fileID: 0}\n  switchIcons_12: {fileID: 0}\n  switchIcons_13: {fileID: 0}\n  switchIcons_14: {fileID: 0}\n  switchIcons_15: {fileID: 0}\n  switchSmallIcons_0: {fileID: 0}\n  switchSmallIcons_1: {fileID: 0}\n  switchSmallIcons_2: {fileID: 0}\n  switchSmallIcons_3: {fileID: 0}\n  switchSmallIcons_4: {fileID: 0}\n  switchSmallIcons_5: {fileID: 0}\n  switchSmallIcons_6: {fileID: 0}\n  switchSmallIcons_7: {fileID: 0}\n  switchSmallIcons_8: {fileID: 0}\n  switchSmallIcons_9: {fileID: 0}\n  switchSmallIcons_10: {fileID: 0}\n  switchSmallIcons_11: {fileID: 0}\n  switchSmallIcons_12: {fileID: 0}\n  switchSmallIcons_13: {fileID: 0}\n  switchSmallIcons_14: {fileID: 0}\n  switchSmallIcons_15: {fileID: 0}\n  switchManualHTML: \n  switchAccessibleURLs: \n  switchLegalInformation: \n  switchMainThreadStackSize: 1048576\n  switchPresenceGroupId: \n  switchLogoHandling: 0\n  switchReleaseVersion: 0\n  switchDisplayVersion: 1.0.0\n  switchStartupUserAccount: 0\n  switchSupportedLanguagesMask: 0\n  switchLogoType: 0\n  switchApplicationErrorCodeCategory: \n  switchUserAccountSaveDataSize: 0\n  switchUserAccountSaveDataJournalSize: 0\n  switchApplicationAttribute: 0\n  switchCardSpecSize: -1\n  switchCardSpecClock: -1\n  switchRatingsMask: 0\n  switchRatingsInt_0: 0\n  switchRatingsInt_1: 0\n  switchRatingsInt_2: 0\n  switchRatingsInt_3: 0\n  switchRatingsInt_4: 0\n  switchRatingsInt_5: 0\n  switchRatingsInt_6: 0\n  switchRatingsInt_7: 0\n  switchRatingsInt_8: 0\n  switchRatingsInt_9: 0\n  switchRatingsInt_10: 0\n  switchRatingsInt_11: 0\n  switchRatingsInt_12: 0\n  switchLocalCommunicationIds_0: \n  switchLocalCommunicationIds_1: \n  switchLocalCommunicationIds_2: \n  switchLocalCommunicationIds_3: \n  switchLocalCommunicationIds_4: \n  switchLocalCommunicationIds_5: \n  switchLocalCommunicationIds_6: \n  switchLocalCommunicationIds_7: \n  switchParentalControl: 0\n  switchAllowsScreenshot: 1\n  switchAllowsVideoCapturing: 1\n  switchAllowsRuntimeAddOnContentInstall: 0\n  switchDataLossConfirmation: 0\n  switchUserAccountLockEnabled: 0\n  switchSystemResourceMemory: 16777216\n  switchSupportedNpadStyles: 3\n  switchNativeFsCacheSize: 32\n  switchIsHoldTypeHorizontal: 0\n  switchSupportedNpadCount: 8\n  switchEnableTouchScreen: 1\n  switchSocketConfigEnabled: 0\n  switchTcpInitialSendBufferSize: 32\n  switchTcpInitialReceiveBufferSize: 64\n  switchTcpAutoSendBufferSizeMax: 256\n  switchTcpAutoReceiveBufferSizeMax: 256\n  switchUdpSendBufferSize: 9\n  switchUdpReceiveBufferSize: 42\n  switchSocketBufferEfficiency: 4\n  switchSocketInitializeEnabled: 1\n  switchNetworkInterfaceManagerInitializeEnabled: 1\n  switchPlayerConnectionEnabled: 1\n  switchUseNewStyleFilepaths: 0\n  switchUseLegacyFmodPriorities: 0\n  switchUseMicroSleepForYield: 1\n  switchEnableRamDiskSupport: 0\n  switchMicroSleepForYieldTime: 25\n  switchRamDiskSpaceSize: 12\n  ps4NPAgeRating: 12\n  ps4NPTitleSecret: \n  ps4NPTrophyPackPath: \n  ps4ParentalLevel: 11\n  ps4ContentID: ED1633-NPXX51362_00-0000000000000000\n  ps4Category: 0\n  ps4MasterVersion: 01.00\n  ps4AppVersion: 01.00\n  ps4AppType: 0\n  ps4ParamSfxPath: \n  ps4VideoOutPixelFormat: 0\n  ps4VideoOutInitialWidth: 1920\n  ps4VideoOutBaseModeInitialWidth: 1920\n  ps4VideoOutReprojectionRate: 60\n  ps4PronunciationXMLPath: \n  ps4PronunciationSIGPath: \n  ps4BackgroundImagePath: \n  ps4StartupImagePath: \n  ps4StartupImagesFolder: \n  ps4IconImagesFolder: \n  ps4SaveDataImagePath: \n  ps4SdkOverride: \n  ps4BGMPath: \n  ps4ShareFilePath: \n  ps4ShareOverlayImagePath: \n  ps4PrivacyGuardImagePath: \n  ps4ExtraSceSysFile: \n  ps4NPtitleDatPath: \n  ps4RemotePlayKeyAssignment: -1\n  ps4RemotePlayKeyMappingDir: \n  ps4PlayTogetherPlayerCount: 0\n  ps4EnterButtonAssignment: 1\n  ps4ApplicationParam1: 0\n  ps4ApplicationParam2: 0\n  ps4ApplicationParam3: 0\n  ps4ApplicationParam4: 0\n  ps4DownloadDataSize: 0\n  ps4GarlicHeapSize: 2048\n  ps4ProGarlicHeapSize: 2560\n  playerPrefsMaxSize: 32768\n  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ\n  ps4pnSessions: 1\n  ps4pnPresence: 1\n  ps4pnFriends: 1\n  ps4pnGameCustomData: 1\n  playerPrefsSupport: 0\n  enableApplicationExit: 0\n  resetTempFolder: 1\n  restrictedAudioUsageRights: 0\n  ps4UseResolutionFallback: 0\n  ps4ReprojectionSupport: 0\n  ps4UseAudio3dBackend: 0\n  ps4UseLowGarlicFragmentationMode: 1\n  ps4SocialScreenEnabled: 0\n  ps4ScriptOptimizationLevel: 0\n  ps4Audio3dVirtualSpeakerCount: 14\n  ps4attribCpuUsage: 0\n  ps4PatchPkgPath: \n  ps4PatchLatestPkgPath: \n  ps4PatchChangeinfoPath: \n  ps4PatchDayOne: 0\n  ps4attribUserManagement: 0\n  ps4attribMoveSupport: 0\n  ps4attrib3DSupport: 0\n  ps4attribShareSupport: 0\n  ps4attribExclusiveVR: 0\n  ps4disableAutoHideSplash: 0\n  ps4videoRecordingFeaturesUsed: 0\n  ps4contentSearchFeaturesUsed: 0\n  ps4CompatibilityPS5: 0\n  ps4AllowPS5Detection: 0\n  ps4GPU800MHz: 1\n  ps4attribEyeToEyeDistanceSettingVR: 0\n  ps4IncludedModules: []\n  ps4attribVROutputEnabled: 0\n  monoEnv: \n  splashScreenBackgroundSourceLandscape: {fileID: 0}\n  splashScreenBackgroundSourcePortrait: {fileID: 0}\n  blurSplashScreenBackground: 1\n  spritePackerPolicy: \n  webGLMemorySize: 16\n  webGLExceptionSupport: 1\n  webGLNameFilesAsHashes: 0\n  webGLShowDiagnostics: 0\n  webGLDataCaching: 1\n  webGLDebugSymbols: 0\n  webGLEmscriptenArgs: \n  webGLModulesDirectory: \n  webGLTemplate: APPLICATION:Default\n  webGLAnalyzeBuildSize: 0\n  webGLUseEmbeddedResources: 0\n  webGLCompressionFormat: 1\n  webGLWasmArithmeticExceptions: 0\n  webGLLinkerTarget: 1\n  webGLThreadsSupport: 0\n  webGLDecompressionFallback: 0\n  webGLInitialMemorySize: 32\n  webGLMaximumMemorySize: 2048\n  webGLMemoryGrowthMode: 2\n  webGLMemoryLinearGrowthStep: 16\n  webGLMemoryGeometricGrowthStep: 0.2\n  webGLMemoryGeometricGrowthCap: 96\n  webGLPowerPreference: 2\n  scriptingDefineSymbols:\n    Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE\n  additionalCompilerArguments: {}\n  platformArchitecture: {}\n  scriptingBackend:\n    Standalone: 0\n  il2cppCompilerConfiguration: {}\n  il2cppCodeGeneration: {}\n  il2cppStacktraceInformation: {}\n  managedStrippingLevel:\n    EmbeddedLinux: 1\n    GameCoreScarlett: 1\n    GameCoreXboxOne: 1\n    Nintendo Switch: 1\n    PS4: 1\n    PS5: 1\n    QNX: 1\n    Stadia: 1\n    WebGL: 1\n    Windows Store Apps: 1\n    XboxOne: 1\n    iPhone: 1\n    tvOS: 1\n  incrementalIl2cppBuild: {}\n  suppressCommonWarnings: 1\n  allowUnsafeCode: 0\n  useDeterministicCompilation: 1\n  selectedPlatform: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 1\n  gcIncremental: 0\n  gcWBarrierValidation: 0\n  apiCompatibilityLevelPerPlatform:\n    Standalone: 6\n  editorAssembliesCompatibilityLevel: 3\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: Template_3D\n  metroPackageVersion: \n  metroCertificatePath: \n  metroCertificatePassword: \n  metroCertificateSubject: \n  metroCertificateIssuer: \n  metroCertificateNotAfter: 0000000000000000\n  metroApplicationDescription: Template_3D\n  wsaImages: {}\n  metroTileShortName: \n  metroTileShowName: 0\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroSupportStreamingInstall: 0\n  metroLastRequiredScene: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 2\n  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}\n  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,\n    a: 1}\n  metroSplashScreenUseBackgroundColor: 0\n  platformCapabilities: {}\n  metroTargetDeviceFamilies: {}\n  metroFTAName: \n  metroFTAFileTypes: []\n  metroProtocolName: \n  vcxProjDefaultLanguage: \n  XboxOneProductId: \n  XboxOneUpdateKey: \n  XboxOneSandboxId: \n  XboxOneContentId: \n  XboxOneTitleId: \n  XboxOneSCId: \n  XboxOneGameOsOverridePath: \n  XboxOnePackagingOverridePath: \n  XboxOneAppManifestOverridePath: \n  XboxOneVersion: 1.0.0.0\n  XboxOnePackageEncryption: 0\n  XboxOnePackageUpdateGranularity: 2\n  XboxOneDescription: \n  XboxOneLanguage:\n  - enus\n  XboxOneCapability: []\n  XboxOneGameRating: {}\n  XboxOneIsContentPackage: 0\n  XboxOneEnhancedXboxCompatibilityMode: 0\n  XboxOneEnableGPUVariability: 0\n  XboxOneSockets: {}\n  XboxOneSplashScreen: {fileID: 0}\n  XboxOneAllowedProductIds: []\n  XboxOnePersistentLocalStorageSize: 0\n  XboxOneXTitleMemory: 8\n  XboxOneOverrideIdentityName: \n  XboxOneOverrideIdentityPublisher: \n  vrEditorSettings: {}\n  cloudServicesEnabled:\n    UNet: 1\n  luminIcon:\n    m_Name: \n    m_ModelFolderPath: \n    m_PortalFolderPath: \n  luminCert:\n    m_CertPath: \n    m_SignPackage: 1\n  luminIsChannelApp: 0\n  luminVersion:\n    m_VersionCode: 1\n    m_VersionName: \n  hmiPlayerDataPath: \n  hmiForceSRGBBlit: 1\n  embeddedLinuxEnableGamepadInput: 1\n  hmiLogStartupTiming: 0\n  hmiCpuConfiguration: \n  apiCompatibilityLevel: 6\n  activeInputHandler: 0\n  windowsGamepadBackendHint: 0\n  cloudProjectId: \n  framebufferDepthMemorylessMode: 0\n  qualitySettingsNames: []\n  projectName: \n  organizationId: \n  cloudEnabled: 0\n  legacyClampBlendShapeWeights: 1\n  hmiLoadingImage: {fileID: 0}\n  virtualTexturingSupportEnabled: 0\n  insecureHttpOption: 0\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2023.1.0b7\nm_EditorVersionWithRevision: 2023.1.0b7 (9a9d9bca6c0f)\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/QualitySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m_CurrentQuality: 5\n  m_QualitySettings:\n  - serializedVersion: 2\n    name: Very Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 15\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 1\n    textureQuality: 1\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.3\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.4\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 16\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Medium\n    pixelLightCount: 1\n    shadows: 1\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 1\n    lodBias: 0.7\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 64\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: High\n    pixelLightCount: 2\n    shadows: 2\n    shadowResolution: 1\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 40\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 256\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Very High\n    pixelLightCount: 3\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 70\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1.5\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 1024\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Ultra\n    pixelLightCount: 4\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 4\n    shadowDistance: 150\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 2\n    maximumLODLevel: 0\n    streamingMipmapsActive: 0\n    streamingMipmapsAddAllCameras: 1\n    streamingMipmapsMemoryBudget: 512\n    streamingMipmapsRenderersPerFrame: 512\n    streamingMipmapsMaxLevelReduction: 2\n    streamingMipmapsMaxFileIORequests: 1024\n    particleRaycastBudget: 4096\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 16\n    asyncUploadPersistentBuffer: 1\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  m_PerPlatformDefaultQuality:\n    Android: 2\n    Lumin: 5\n    Nintendo 3DS: 5\n    Nintendo Switch: 5\n    PS4: 5\n    PSP2: 2\n    Standalone: 5\n    WebGL: 3\n    Windows Store Apps: 5\n    XboxOne: 5\n    iPhone: 2\n    tvOS: 2\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Default\n  - TransparentFX\n  - Ignore Raycast\n  - \n  - Water\n  - UI\n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  m_SortingLayers:\n  - name: Default\n    uniqueID: 0\n    locked: 0\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/TimeManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!5 &1\nTimeManager:\n  m_ObjectHideFlags: 0\n  Fixed Timestep: 0.02\n  Maximum Allowed Timestep: 0.33333334\n  m_TimeScale: 1\n  Maximum Particle Timestep: 0.03\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/UnityConnectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 1\n  m_Enabled: 0\n  m_TestMode: 0\n  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events\n  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events\n  m_ConfigUrl: https://config.uca.cloud.unity3d.com\n  m_TestInitMode: 0\n  CrashReportingSettings:\n    m_EventUrl: https://perf-events.cloud.unity3d.com\n    m_Enabled: 0\n    m_LogBufferSize: 10\n    m_CaptureEditorExceptions: 1\n  UnityPurchasingSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n  UnityAnalyticsSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n    m_InitializeOnStartup: 1\n  UnityAdsSettings:\n    m_Enabled: 0\n    m_InitializeOnStartup: 1\n    m_TestMode: 0\n    m_IosGameId: \n    m_AndroidGameId: \n    m_GameIds: {}\n    m_GameId: \n  PerformanceReportingSettings:\n    m_Enabled: 0\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/VFXManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fileID: 0}\n  m_CopyBufferShader: {fileID: 0}\n  m_SortShader: {fileID: 0}\n  m_RenderPipeSettingsPath: \n  m_FixedTimeStep: 0.016666668\n  m_MaxDeltaTime: 0.05\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/VersionControlSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!890905787 &1\nVersionControlSettings:\n  m_ObjectHideFlags: 0\n  m_Mode: Visible Meta Files\n  m_CollabEditorSettings:\n    inProgressEnabled: 1\n"
  },
  {
    "path": "Projects/2023.1 Latest/ProjectSettings/XRSettings.asset",
    "content": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n        \"False\",\n        \"False\"\n    ]\n}"
  },
  {
    "path": "Projects/2023.1 Latest/UserSettings/EditorUserSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!162 &1\nEditorUserSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n  m_ConfigSettings:\n    vcSharedLogLevel:\n      value: 0d5e400f0650\n      flags: 0\n  m_VCAutomaticAdd: 1\n  m_VCDebugCom: 0\n  m_VCDebugCmd: 0\n  m_VCDebugOut: 0\n  m_SemanticMergeMode: 2\n  m_DesiredImportWorkerCount: 4\n  m_StandbyImportWorkerCount: 2\n  m_IdleImportWorkerShutdownDelay: 60000\n  m_VCShowFailedCheckout: 1\n  m_VCOverwriteFailedCheckoutAssets: 1\n  m_VCProjectOverlayIcons: 1\n  m_VCHierarchyOverlayIcons: 1\n  m_VCOtherOverlayIcons: 1\n  m_VCAllowAsyncUpdate: 1\n  m_ArtifactGarbageCollection: 1\n"
  },
  {
    "path": "Projects/2023.1 Latest/UserSettings/Search.index",
    "content": "{\n    \"name\": \"Assets\",\n    \"roots\": [\"Assets\"],\n    \"includes\": [],\n    \"excludes\": [],\n    \"options\": {\n        \"types\": true,\n        \"properties\": true,\n        \"extended\": false,\n        \"dependencies\": false\n    },\n    \"baseScore\": 999\n}"
  },
  {
    "path": "Projects/2023.1 Latest/UserSettings/Search.settings",
    "content": "trackSelection = true\nrefreshSearchWindowsInPlayMode = false\nfetchPreview = true\ndefaultFlags = 0\nkeepOpen = false\nqueryFolder = \"Assets\"\nonBoardingDoNotAskAgain = true\nshowPackageIndexes = false\nshowStatusBar = false\nscopes = {\n}\nproviders = {\n\tadb = {\n\t\tactive = false\n\t\tpriority = 2500\n\t\tdefaultAction = null\n\t}\n\tasset = {\n\t\tactive = true\n\t\tpriority = 25\n\t\tdefaultAction = null\n\t}\n\tstore = {\n\t\tactive = true\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tfind = {\n\t\tactive = true\n\t\tpriority = 25\n\t\tdefaultAction = null\n\t}\n\tlog = {\n\t\tactive = false\n\t\tpriority = 210\n\t\tdefaultAction = null\n\t}\n\tpackages = {\n\t\tactive = true\n\t\tpriority = 90\n\t\tdefaultAction = null\n\t}\n\tperformance = {\n\t\tactive = false\n\t\tpriority = 100\n\t\tdefaultAction = null\n\t}\n\tscene = {\n\t\tactive = true\n\t\tpriority = 50\n\t\tdefaultAction = null\n\t}\n}\nobjectSelectors = {\n}\nrecentSearches = [\n]\nsearchItemFavorites = [\n]\nsavedSearchesSortOrder = 0\nshowSavedSearchPanel = false\nhideTabs = false\nexpandedQueries = [\n]\nqueryBuilder = false\nignoredProperties = \"id;name;classname;imagecontentshash\"\nhelperWidgetCurrentArea = \"all\"\ndisabledIndexers = \"\"\nminIndexVariations = 2\nfindProviderIndexHelper = true"
  },
  {
    "path": "README.md",
    "content": "# TSK VSCode Editor\n\n[![Discord](https://img.shields.io/discord/1106106269837819914?color=D1495B&logo=discord&logoColor=FFFFFF&style=flat)](https://discord.gg/VU8EhUY7bX) [![openupm](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=downloads&query=%24.downloads&suffix=%2Fmonth&url=https%3A%2F%2Fpackage.openupm.com%2Fdownloads%2Fpoint%2Flast-month%2Fcom.tsk.ide.vscode)](https://openupm.com/packages/com.tsk.ide.vscode/) [![openupm](https://img.shields.io/npm/v/com.tsk.ide.vscode?label=openupm&registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.tsk.ide.vscode/)\n\nUnity Code editor integration for VSCode. **(2021.3+)**\n\nCheck out the [Changelog](https://github.com/Chizaruu/com.tsk.ide.vscode/wiki/CHANGELOG) and [FAQs](https://github.com/Chizaruu/com.tsk.ide.vscode/wiki/FAQs) pages for more information.\n\n**Note** - This package is [incompatible](https://github.com/Chizaruu/com.tsk.ide.vscode/issues/77) with **Unity Visual Studio** package.\n\nIf you find my package useful, please consider giving it a Star 🌟 to show your support. Thank you!\n\n## Features\n\n### Project SDK Support\n\nThis package offers comprehensive project SDK support based on .Net standards. By leveraging this support, you can utilize the latest C# features and language enhancements within your Unity projects, subject to Unity's compatibility.\n\n### Organized .csproj Files\n\nTo enhance project structure and maintain cleanliness, the `com.tsk.ide.vscode` package facilitates the automatic separation of `.csproj` files into individual folders. These folders are consolidated within a main directory named \"CSProjFolders.\" This organization ensures a more streamlined and organized project structure, contributing to improved clarity and ease of navigation.\n\n### Successful Dotnet Build\n\nThe `com.tsk.ide.vscode` package ensures a seamless build process by guaranteeing successful execution of the `dotnet build` command. This means your project can be compiled and built without issues, ensuring a smooth development experience.\n\n### Microsoft.Unity.Analyzers Integration [![NuGet](https://img.shields.io/nuget/v/Microsoft.Unity.Analyzers.svg)](https://nuget.org/packages/Microsoft.Unity.Analyzers)\n\nIn addition to its core features, this package includes seamless integration with Microsoft.Unity.Analyzers library. This integration provides access to various code analysis and validation tools designed for Unity projects. With the support of these analyzers, you can enhance code quality, identify potential issues, and adhere to best practices, ultimately improving the overall robustness and maintainability of your Unity projects.\n\n### Streamlined Configuration Setup and Customization\n\nThe com.tsk.ide.vscode package presents a proficient solution designed for streamlined integration of Visual Studio Code with Unity. This package significantly simplifies the setup process by generating essential configuration files, namely `settings.json`, `.editorconfig`, `.code-workspace`, and `launch.json`. This conserves valuable time and boosts your efficiency by minimizing the potential for setup errors.\n\nTo utilize this feature, navigate to `Preferences > External Tools > Generate config files for:` and select the appropriate options to create the configuration files. After this, merely click on the `Regenerate` button.\n\nBeyond simplifying setup, the `com.tsk.ide.vscode` package introduces a dedicated configuration section within External Tools. This component provides unprecedented control over the settings files generated, enabling manual customization in accordance with individual preferences and unique project requirements. This flexibility allows you to customize your development environment for the best possible productivity and outcome.\n\n## Prerequisites\n\n1. Install the [.Net 7 SDK](https://dotnet.microsoft.com/en-us/download).\n2. Install the [C# Dev Kit extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) from the VS Code Marketplace.\n3. Install the [Unity extension](https://marketplace.visualstudio.com/items?itemName=visualstudiotoolsforunity.vstuc) from the VS Code Marketplace\n\n## Install via Package Manager\n\n### Unity\n\n-   Open Window/Package Manager\n-   Click +\n-   Select Add package from git URL\n-   Paste `https://github.com/Chizaruu/com.tsk.ide.vscode.git#upm` into URL\n-   Click Add\n\n### OpenUPM\n\nPlease follow the instrustions:\n\n-   Open Edit/Project Settings/Package Manager\n-   Add a new Scoped Registry (or edit the existing OpenUPM entry)\n\n```text\n  Name: package.openupm.com\n  URL: https://package.openupm.com\n  Scope(s): com.tsk.ide.vscode\n```\n\n-   Click Save (or Apply)\n-   Open Window/Package Manager\n-   Click +\n-   Select Add package by name... or Add package from git URL...\n-   Paste `com.tsk.ide.vscode` into name\n-   Paste `1.5.0` into version\n-   Click Add\n\nAlternatively, merge the snippet to Packages/manifest.json\n\n```json\n{\n    \"scopedRegistries\": [\n        {\n            \"name\": \"package.openupm.com\",\n            \"url\": \"https://package.openupm.com\",\n            \"scopes\": [\"com.tsk.ide.vscode\"]\n        }\n    ],\n    \"dependencies\": {\n        \"com.tsk.ide.vscode\": \"1.5.0\"\n    }\n}\n```\n\n## Post Installation\n\n### Regenerate .csprog files\n\nAfter installing the package, follow these steps to regenerate the .csproj files:\n\n1. Open the Preferences window.\n2. Go to the External Tools tab.\n3. Click on the Regenerate .csproj Files option.\n\nThe assembly project files will be auto-generated in {ProjectDirectory}/CSharpProjFolders.\n\nTo ignore these auto-generated files, add the following line to your .gitignore:\n\nExample .gitignore lines:\n\n```\n# TSK VSCode\n/CSharpProjFolders/*\n```\n\n### Extras\n\n-   To enable grammar and highlighting for jslib files, install the [jslib-for-unity](https://github.com/TheSleepyKoala/jslib-for-unity) package.\n\n## Contributing\n\nThank you for considering contributing to the `com.tsk.ide.vscode` package! To contribute, please follow these guidelines:\n\n-   Create a new branch for your changes.\n-   Discuss your changes by creating a new issue in the repository before starting work.\n-   Follow the existing coding conventions and style.\n-   Provide a clear description of your changes in your pull request.\n-   Submit your pull request to the default branch.\n\nWe appreciate all contributions to com.tsk.ide.vscode!\n"
  },
  {
    "path": "TestAnalyzer/TestGenerator.cs",
    "content": "using System.Text;\nusing Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.Text;\n\nnamespace Generators\n{\n    [Generator]\n    public class TestGenerator : ISourceGenerator\n    {\n        public static readonly DiagnosticDescriptor testDiagnostic = new DiagnosticDescriptor(\n            \"TEST001\",\n            \"TestWarning\",\n            \"This is a test warning from the analyzer\", \"Testing\", DiagnosticSeverity.Warning, true);\n\n        public void Initialize(GeneratorInitializationContext context)\n        {\n        }\n\n        public void Execute(GeneratorExecutionContext context)\n        {\n            if (context.Compilation.AssemblyName == \"Assembly-CSharp\")\n            {\n                string sourceText = \"\"\"\n                using UnityEngine;\n\n                namespace TestCode\n                {\n                    public class TestClass\n                    {\n                        public static void TestMethod()\n                        {\n                            Debug.Log(\"Hello from the generated class\");\n                        }\n                    }\n                }\n                \"\"\";\n\n                context.AddSource(\"Test.generated.cs\", SourceText.From(sourceText, Encoding.UTF8));\n            }\n\n            context.ReportDiagnostic(Diagnostic.Create(testDiagnostic, Location.Create(\"Test.generated.cs\", default, default)));\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/.npmignore",
    "content": "build.bat*\n*.tgz*\n*.DotSettings.user*\nupm-ci~/**\n.Editor/**\n.yamato/**\n*.zip*\nTestRunnerOptions.json"
  },
  {
    "path": "com.tsk.ide.vscode/CHANGELOG.md",
    "content": "# Code Editor Package for Visual Studio Code\n\n## [1.5.0] - 2024-02-22\n\n-   Fixed DefaultExtensions not updating correctly\n-   Added regions for peace of mind\n-   Added Extension Test File (KoalaExtension.koala)\n-   Better UI/UX for the user\n\n## [1.4.8] - 2024-02-22\n\n-   Added Launch.json section to Externals Tools\n\n## [1.4.7] - 2023-08-06\n\n-   Remove omnisharp config generation from package\n-   Clean up code and remove unused directives\n-   Update .gitignore to remove .omnisharp.json ignore\n\n## [1.4.6] - 2023-08-06\n\n-   Added ignore IDE0051 to .editorconfig default configuration\n\n## [1.4.5] - 2023-08-02\n\n-   Added custom and unity builtin analyzers to csproj #69 - Thanks @mifreundorfer\n\n## [1.4.4] - 2023-08-02\n\n-   Fix the asmdef name to not conflict with the official package - Thanks @mifreundorfer\n-   Remove TSKDoNotDelete Generation\n-   No longer can one's configuration be taken from them on import of this package.\n-   User must use `Preferences > External Tools > Generate config files for:` to generate their config files.\n\n## [1.4.3] - 2023-07-29\n\n-   Fix possible deadlock caused by not reading stdout\n\n## [1.4.2] - 2023-06-13\n\n-   Restrict Shell Compatibility for Project Generation's Dotnet Build (Mac/Linux)\n\n## [1.4.1] - 2023-06-05\n\n-   Added .jslib to default extensions for VSCode.\n-   Refactored configuration defaults and removed redundant options from omnisharp.json. - Thanks @ershn\n-   Added support for renaming methods and classes using Omnisharp.\n-   Updated settings.json to correctly utilize useModernNet, sdkIncludePrereleases, and organizeImportsOnFormat.\n\n## [1.4.0] - 2023-06-04\n\n-   Refactored code to improve platform compatibility\n\n## [1.3.9] - 2023-05-18\n\n-   .csproj files are separated into their own folders within a main folder called \"CSProjFolders\" - Thanks @frarees\n-   The ProjectReference element now includes a direct path to the file.\n    -   Project element added\n    -   Name element added\n-   Compile element now includes a direct path to the file.\n-   GenerateAssemblyInfo property set to false\n-   Start of `dotnet build` support\n\n## [1.3.7] - 2023-05-16\n\n-   Added the option to disable adding Analyzers to all packages\n    -   This means that it will only be added to .csproj files originating from the Assets Folder.\n\n## [1.3.6] - 2023-05-10\n\n-   [Added config section to Externals Tools](https://github.com/Chizaruu/com.tsk.ide.vscode/commit/8da03f5885c268eaecdfd904e6a324be9bf9b82a)\n-   [Added Foldouts to remove visual clutter](https://github.com/Chizaruu/com.tsk.ide.vscode/commit/ba73359980ad49f8eca6d485eda6f54e76a2bbff)\n-   A \"TSKDoNotDelete\" text file is generated when the package is first added. This was done to counter the constant auto-generation that occurred when you would delete the config files.\n-   [Added Configurable Config Settings](https://github.com/Chizaruu/com.tsk.ide.vscode/commit/d7a33951346235a91606e258cb206cc68e65e723)\n\n## [1.3.4] - 2023-04-07\n\n-   Minimum Unity version is now 2021.3\n-   Added support for 2021/2022 NetStandard Editor Assemblies Compatibility Level (Not really, it's just a workaround until users start using 2023)\n-   Added toggle for preferred default arguments for opening VSCode (You can choose between user or workspace)\n-   Restructured the repository to be more in line with Unity's architecture (See <https://github.com/Unity-Technologies/com.unity.cinemachine> for more info)\n\n## [1.3.2] - 2023-04-05\n\n-   Removed koalafied Microsoft.Unity.Analyzers dll\n-   Removed LocationPaths option from omnisharp.json\n-   Added support for Nuget package Microsoft.Unity.Analyzers (See ProjectGeneration.cs for more info)\n\n## [1.3.1] - 2023-04-01\n\n-   Moved .omnisharp, .editorconfig, and analyzer generation to ProjectGeneration.cs to be in line with the rest of the project\n-   Simplified XElement creation in ProjectGeneration.cs to be more readable\n\n## [1.3.0] - 2023-04-01\n\n-   Added complete SDK support, this allows you to use Omnisharp's useModernNet in your project (Special thanks to Andrew Spiering @wackoisgod)\n-   Added more predefined variables for the omnisharp.json file\n-   Going forward, 2021.3 and below will only be able to use .Net Framework API compatibility level\n-   Added support for .Net 4.8 API compatibility level for 2022.1 and above\n-   Fixed failure while loading the analyzer reference 'Unity.SourceGenerators'\n\n## [1.2.7] - 2023-03-19\n\n-   Added Unity Roslyn analyzers support (See <https://code.visualstudio.com/docs/other/unity#_enabling-unity-warnings>)\n-   Added Formatting support (See CreateOmniSharpConfig() in VSCodeScriptEditor.cs)\n-   Removed Rider Package (Spits)\n-   Updated Text-Framework to 1.3.3\n-   Start of Community Support\n\n## [1.2.6] - 2023-03-10\n\n-   Added workspace file generation\n-   End of Unity Support\n\n## [1.2.5] - 2022-02-07\n\n-   Introduce OnGeneratedCSProjectFiles, OnGeneratedCSProject and OnGeneratedSlnSolution callbacks.\n-   Always use forward slash in source paths\n-   Analyzers use absolute paths\n-   Ruleset files for roslyn analyzers\n-   Extra snap search paths on Ubuntu\n-   Specific c# language version for specific unity versions\n-   No longer hide .gitignore in VSCode file explorer\n\n## [1.2.3] - 2020-10-23\n\nRemove workaround for VSCode omnisharp (as of <https://github.com/OmniSharp/omnisharp-vscode/issues/4113> we no longer need to disable the referenceoutputassemblies).\n\n## [1.2.2] - 2020-09-04\n\nVSC-14 - synchronize solution file when adding new assembly\n\n## [1.2.1] - 2020-05-15\n\nSource filtering adds support for asmref\n\n## [1.2.0] - 2020-03-04\n\nDo not reference projects that has not been generated (case 1211057)\nOnly open files that exists (case 1188394)\nAdd individual toggle buttons for generating csprojects for packages\nAdd support for Roslyn analyzers in project generation through csc.rsp and compiled assembly references\nRemove Release build target from csproj and sln\n\n## [1.1.4] - 2020-01-02\n\nDelta project generation, only recompute the csproj files whose script modified.\n\n## [1.1.3] - 2019-10-22\n\nExe version of vscode will use Normal ProcessWindowStyle while cmd will use Hidden\n\n## [1.1.2] - 2019-08-30\n\nFixing OSX open command arguments\n\n## [1.1.1] - 2019-08-19\n\nSupport for Player Project. Generates specific csproj files containing files, reference, defines,\netc. that will show how the assembly will be compiled for a target platform.\n\n## [1.1.0] - 2019-08-07\n\nAdds support for choosing extensions to be opened with VSCode. This can be done through the GUI in Preferences.\nAvoids opening all extensions after the change in core unity.\n\n## [1.0.7] - 2019-05-15\n\nFix various OSX specific issues.\nGenerate project on load if they are not generated.\nFix path recognition.\n\n## [1.0.6] - 2019-04-30\n\nEnsure asset database is refreshed when generating csproj and solution files.\n\n## [1.0.5] - 2019-04-27\n\nAdd support for generating all csproj files.\n\n## [1.0.4] - 2019-04-18\n\nFix relative package paths.\nFix opening editor on mac.\nAdd %LOCALAPPDATA%/Programs to the path of install paths.\n\n## [1.0.3] - 2019-01-01\n\n### This is the first release of _Unity Package vscode_editor_\n\nUsing the newly created api to integrate Visual Studio Code with Unity.\n"
  },
  {
    "path": "com.tsk.ide.vscode/CHANGELOG.md.meta",
    "content": "fileFormatVersion: 2\nguid: 5f63701bf35cb994187ea04dc0fa9528\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ConfigGeneration/ConfigGeneration.cs",
    "content": "using System.IO;\nusing UnityEditor;\n\nnamespace VSCodeEditor\n{\n    public interface IConfigGenerator\n    {\n        string VSCodeSettings { get; set; }\n        string WorkspaceSettings { get; set; }\n        string EditorConfigSettings { get; set; }\n        string LaunchConfigSettings { get; set; }\n        string ProjectDirectory { get; }\n        IFlagHandler FlagHandler { get; }\n        void Sync();\n    }\n\n    public class ConfigGeneration : IConfigGenerator\n    {\n        const string k_DefaultSettingsJson =\n            /*lang=json,strict*/\n            @\"{\n    \"\"files.exclude\"\":\n    {\n        \"\"**/.DS_Store\"\":true,\n        \"\"**/.git\"\":true,\n        \"\"**/.gitmodules\"\":true,\n        \"\"**/*.booproj\"\":true,\n        \"\"**/*.pidb\"\":true,\n        \"\"**/*.suo\"\":true,\n        \"\"**/*.user\"\":true,\n        \"\"**/*.userprefs\"\":true,\n        \"\"**/*.unityproj\"\":true,\n        \"\"**/*.dll\"\":true,\n        \"\"**/*.exe\"\":true,\n        \"\"**/*.pdf\"\":true,\n        \"\"**/*.mid\"\":true,\n        \"\"**/*.midi\"\":true,\n        \"\"**/*.wav\"\":true,\n        \"\"**/*.gif\"\":true,\n        \"\"**/*.ico\"\":true,\n        \"\"**/*.jpg\"\":true,\n        \"\"**/*.jpeg\"\":true,\n        \"\"**/*.png\"\":true,\n        \"\"**/*.psd\"\":true,\n        \"\"**/*.tga\"\":true,\n        \"\"**/*.tif\"\":true,\n        \"\"**/*.tiff\"\":true,\n        \"\"**/*.3ds\"\":true,\n        \"\"**/*.3DS\"\":true,\n        \"\"**/*.fbx\"\":true,\n        \"\"**/*.FBX\"\":true,\n        \"\"**/*.lxo\"\":true,\n        \"\"**/*.LXO\"\":true,\n        \"\"**/*.ma\"\":true,\n        \"\"**/*.MA\"\":true,\n        \"\"**/*.obj\"\":true,\n        \"\"**/*.OBJ\"\":true,\n        \"\"**/*.asset\"\":true,\n        \"\"**/*.cubemap\"\":true,\n        \"\"**/*.flare\"\":true,\n        \"\"**/*.mat\"\":true,\n        \"\"**/*.meta\"\":true,\n        \"\"**/*.prefab\"\":true,\n        \"\"**/*.unity\"\":true,\n        \"\"build/\"\":true,\n        \"\"Build/\"\":true,\n        \"\"Library/\"\":true,\n        \"\"library/\"\":true,\n        \"\"obj/\"\":true,\n        \"\"Obj/\"\":true,\n        \"\"ProjectSettings/\"\":true,\n        \"\"temp/\"\":true,\n        \"\"Temp/\"\":true\n    }\n}\";\n\n        const string k_DefaultWorkspaceJson =\n            /*lang=json,strict*/\n            @\"{\n\t\"\"folders\"\": [\n\t\t{\n\t\t\t\"\"path\"\": \"\".\"\"\n\t\t}\n\t]\n}\";\n\n        const string k_DefaultEditorConfig =\n            @\"# EditorConfig is awesome: http://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# 4 space indentation\n[*.cs]\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\n\n#Ignore IDE0051: Remove unused private members\n[*.cs]\ndotnet_diagnostic.IDE0051.severity = none\n\";\n\n        const string k_DefaultLaunchConfig = @\"{\n    \"\"version\"\": \"\"0.2.0\"\",\n    \"\"configurations\"\": [\n        {\n            \"\"name\"\": \"\"Attach to Unity\"\",\n            \"\"type\"\": \"\"vstuc\"\",\n            \"\"request\"\": \"\"attach\"\"\n        }\n     ]\n}\";\n        public string ProjectDirectory { get; }\n        readonly string m_ProjectName;\n        IFlagHandler IConfigGenerator.FlagHandler => m_FlagHandler;\n\n        string m_VSCodeSettings;\n        string m_WorkspaceSettings;\n        string m_EditorConfigSettings;\n        string m_LaunchConfigSettings;\n\n        public string VSCodeSettings\n        {\n            get =>\n                m_VSCodeSettings ??= EditorPrefs.GetString(\n                    \"vscode_settings\",\n                    k_DefaultSettingsJson\n                );\n            set\n            {\n                if (value == \"\")\n                    value = k_DefaultSettingsJson;\n\n                m_VSCodeSettings = value;\n                EditorPrefs.SetString(\"vscode_settings\", value);\n            }\n        }\n\n        public string WorkspaceSettings\n        {\n            get =>\n                m_WorkspaceSettings ??= EditorPrefs.GetString(\n                    \"vscode_workspaceSettings\",\n                    k_DefaultWorkspaceJson\n                );\n            set\n            {\n                if (value == \"\")\n                    value = k_DefaultWorkspaceJson;\n\n                m_WorkspaceSettings = value;\n                EditorPrefs.SetString(\"vscode_workspaceSettings\", value);\n            }\n        }\n\n        public string EditorConfigSettings\n        {\n            get =>\n                m_EditorConfigSettings ??= EditorPrefs.GetString(\n                    \"vscode_editorConfigSettings\",\n                    k_DefaultEditorConfig\n                );\n            set\n            {\n                if (value == \"\")\n                    value = k_DefaultEditorConfig;\n\n                m_EditorConfigSettings = value;\n                EditorPrefs.SetString(\"vscode_editorConfigSettings\", value);\n            }\n        }\n\n        public string LaunchConfigSettings\n        {\n            get =>\n                m_LaunchConfigSettings ??= EditorPrefs.GetString(\n                    \"vscode_launchConfigSettings\",\n                    k_DefaultLaunchConfig\n                );\n            set\n            {\n                if (value == \"\")\n                    value = k_DefaultLaunchConfig;\n\n                m_LaunchConfigSettings = value;\n                EditorPrefs.SetString(\"vscode_launchConfigSettings\", value);\n            }\n        }\n\n        readonly IFlagHandler m_FlagHandler;\n        readonly IFileIO m_FileIOProvider;\n\n        public ConfigGeneration(string tempDirectory)\n            : this(tempDirectory, new FlagHandler(), new FileIOProvider()) { }\n\n        public ConfigGeneration(\n            string tempDirectory,\n            IFlagHandler flagHandler,\n            IFileIO fileIOProvider\n        )\n        {\n            ProjectDirectory = tempDirectory;\n            m_ProjectName = Path.GetFileName(ProjectDirectory);\n            m_FlagHandler = new FlagHandler();\n            m_FileIOProvider = new FileIOProvider();\n        }\n\n        public void Sync()\n        {\n            WriteVSCodeSettingsFiles();\n            WriteWorkspaceFile();\n            WriteEditorConfigFile();\n            WriteLaunchConfigFile();\n        }\n\n        void WriteVSCodeSettingsFiles()\n        {\n            if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.VSCode))\n            {\n                var vsCodeDirectory = Path.Combine(ProjectDirectory, \".vscode\");\n\n                if (!m_FileIOProvider.Exists(vsCodeDirectory))\n                    m_FileIOProvider.CreateDirectory(vsCodeDirectory);\n\n                var vsCodeSettingsJson = Path.Combine(vsCodeDirectory, \"settings.json\");\n\n                m_FileIOProvider.WriteAllText(vsCodeSettingsJson, VSCodeSettings);\n            }\n        }\n\n        void WriteWorkspaceFile()\n        {\n            if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.Workspace))\n            {\n                var workspaceFile = Path.Combine(\n                    ProjectDirectory,\n                    $\"{m_ProjectName}.code-workspace\"\n                );\n\n                m_FileIOProvider.WriteAllText(workspaceFile, WorkspaceSettings);\n            }\n        }\n\n        void WriteEditorConfigFile()\n        {\n            if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.EditorConfig))\n            {\n                var editorConfig = Path.Combine(ProjectDirectory, \".editorconfig\");\n\n                m_FileIOProvider.WriteAllText(editorConfig, EditorConfigSettings);\n            }\n        }\n\n        void WriteLaunchConfigFile()\n        {\n            if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.LaunchConfig))\n            {\n                var vsCodeDirectory = Path.Combine(ProjectDirectory, \".vscode\");\n\n                if (!m_FileIOProvider.Exists(vsCodeDirectory))\n                    m_FileIOProvider.CreateDirectory(vsCodeDirectory);\n\n                var launchConfigJson = Path.Combine(vsCodeDirectory, \"launch.json\");\n\n                m_FileIOProvider.WriteAllText(launchConfigJson, LaunchConfigSettings);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ConfigGeneration/ConfigGeneration.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 62a6a6defe5e71a479e0fcaba9e99256\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ConfigGeneration.meta",
    "content": "fileFormatVersion: 2\nguid: 63ea0ed645335ce4fa30a10520e0876f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration/AssemblyNameProvider.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEditor;\nusing UnityEditor.Compilation;\nusing UnityEditor.PackageManager;\n\nnamespace VSCodeEditor\n{\n    public interface IAssemblyNameProvider\n    {\n        string[] ProjectSupportedExtensions { get; }\n        ProjectGenerationFlag ProjectGenerationFlag { get; }\n        string GetAssemblyNameFromScriptPath(string path);\n        IEnumerable<Assembly> GetAssemblies(Func<string, bool> shouldFileBePartOfSolution);\n        IEnumerable<string> GetAllAssetPaths();\n        IEnumerable<string> GetRoslynAnalyzerPaths();\n        UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath);\n        ResponseFileData ParseResponseFile(\n            string responseFilePath,\n            string projectDirectory,\n            string[] systemReferenceDirectories\n        );\n        bool IsInternalizedPackagePath(string path);\n    }\n\n    internal interface IPackageInfoCache\n    {\n        void ResetPackageInfoCache();\n    }\n\n    internal class AssemblyNameProvider : IAssemblyNameProvider, IPackageInfoCache\n    {\n        private readonly Dictionary<\n            string,\n            UnityEditor.PackageManager.PackageInfo\n        > m_PackageInfoCache = new();\n\n        public string[] ProjectSupportedExtensions =>\n            EditorSettings.projectGenerationUserExtensions;\n\n        public ProjectGenerationFlag ProjectGenerationFlag\n        {\n            get => (ProjectGenerationFlag)EditorPrefs.GetInt(\"unity_project_generation_flag\", 0);\n        }\n\n        public string GetAssemblyNameFromScriptPath(string path)\n        {\n            return CompilationPipeline.GetAssemblyNameFromScriptPath(path);\n        }\n\n        public IEnumerable<Assembly> GetAssemblies(Func<string, bool> shouldFileBePartOfSolution)\n        {\n            return CompilationPipeline\n                .GetAssemblies()\n                .Where(\n                    i => 0 < i.sourceFiles.Length && i.sourceFiles.Any(shouldFileBePartOfSolution)\n                );\n        }\n\n        public IEnumerable<string> GetAllAssetPaths()\n        {\n            return AssetDatabase.GetAllAssetPaths();\n        }\n\n        private static string ResolvePotentialParentPackageAssetPath(string assetPath)\n        {\n            const string packagesPrefix = \"packages/\";\n            if (!assetPath.StartsWith(packagesPrefix, StringComparison.OrdinalIgnoreCase))\n            {\n                return null;\n            }\n\n            var followupSeparator = assetPath.IndexOf('/', packagesPrefix.Length);\n            if (followupSeparator == -1)\n            {\n                return assetPath.ToLowerInvariant();\n            }\n\n            return assetPath[..followupSeparator].ToLowerInvariant();\n        }\n\n        public void ResetPackageInfoCache()\n        {\n            m_PackageInfoCache.Clear();\n        }\n\n        public UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath)\n        {\n            var parentPackageAssetPath = ResolvePotentialParentPackageAssetPath(assetPath);\n            if (parentPackageAssetPath == null)\n            {\n                return null;\n            }\n\n            if (m_PackageInfoCache.TryGetValue(parentPackageAssetPath, out var cachedPackageInfo))\n            {\n                return cachedPackageInfo;\n            }\n\n            var result = UnityEditor.PackageManager.PackageInfo.FindForAssetPath(\n                parentPackageAssetPath\n            );\n            m_PackageInfoCache[parentPackageAssetPath] = result;\n            return result;\n        }\n\n        public ResponseFileData ParseResponseFile(\n            string responseFilePath,\n            string projectDirectory,\n            string[] systemReferenceDirectories\n        )\n        {\n            return CompilationPipeline.ParseResponseFile(\n                responseFilePath,\n                projectDirectory,\n                systemReferenceDirectories\n            );\n        }\n\n        public bool IsInternalizedPackagePath(string path)\n        {\n            if (string.IsNullOrWhiteSpace(path))\n            {\n                return false;\n            }\n            var packageInfo = FindForAssetPath(path);\n            if (packageInfo == null)\n            {\n                return false;\n            }\n            var packageSource = packageInfo.source;\n\n            return packageSource switch\n            {\n                PackageSource.Embedded\n                    => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Embedded),\n                PackageSource.Registry\n                    => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Registry),\n                PackageSource.BuiltIn\n                    => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.BuiltIn),\n                PackageSource.Unknown\n                    => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Unknown),\n                PackageSource.Local => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Local),\n                PackageSource.Git => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Git),\n                PackageSource.LocalTarball\n                    => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.LocalTarBall),\n                _ => false\n            };\n        }\n\n        public IEnumerable<string> GetRoslynAnalyzerPaths()\n        {\n            return PluginImporter\n                .GetAllImporters()\n                .Where(\n                    i =>\n                        !i.isNativePlugin\n                        && AssetDatabase.GetLabels(i).SingleOrDefault(l => l == \"RoslynAnalyzer\")\n                            != null\n                )\n                .Select(i => i.assetPath);\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration/AssemblyNameProvider.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7f897371fff63744f9c875916e4aee1f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration/GUIDGenerator.cs",
    "content": "namespace VSCodeEditor\n{\n    public interface IGUIDGenerator\n    {\n        string ProjectGuid(string projectName, string assemblyName);\n        string SolutionGuid(string projectName, string extension);\n    }\n\n    internal class GUIDProvider : IGUIDGenerator\n    {\n        public string ProjectGuid(string projectName, string assemblyName)\n        {\n            return SolutionGuidGenerator.GuidForProject(projectName + assemblyName);\n        }\n\n        public string SolutionGuid(string projectName, string extension)\n        {\n            return SolutionGuidGenerator.GuidForSolution(projectName, extension); // GetExtensionOfSourceFiles(assembly.sourceFiles)\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration/GUIDGenerator.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d4a8f2bf856d4ff45b09dd3fbdb4e0ac\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration/ProjectGeneration.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security;\nusing System.Security.Cryptography;\nusing System.Text;\nusing System.Xml.Linq;\nusing UnityEditor;\nusing UnityEditor.Build;\nusing UnityEditor.Compilation;\nusing UnityEngine;\nusing UnityEngine.Profiling;\nusing SR = System.Reflection;\n\nnamespace VSCodeEditor\n{\n    public interface IGenerator\n    {\n        bool SyncIfNeeded(List<string> affectedFiles, string[] reimportedFiles);\n        void Sync();\n        string SolutionFile();\n        string ProjectDirectory { get; }\n        string CSharpProjFoldersDirectory { get; }\n        IAssemblyNameProvider AssemblyNameProvider { get; }\n        bool SolutionExists();\n    }\n\n    public class ProjectGeneration : IGenerator\n    {\n        enum ScriptingLanguage\n        {\n            None = 0,\n            CSharp = 1\n        }\n\n        const string k_WindowsNewline = \"\\r\\n\";\n\n        /// <summary>\n        /// Map source extensions to ScriptingLanguages\n        /// </summary>\n        static readonly Dictionary<string, ScriptingLanguage> k_BuiltinSupportedExtensions =\n            new()\n            {\n                { \"cginc\", ScriptingLanguage.None },\n                { \"compute\", ScriptingLanguage.None },\n                { \"cs\", ScriptingLanguage.CSharp },\n                { \"glslinc\", ScriptingLanguage.None },\n                { \"hlsl\", ScriptingLanguage.None },\n                { \"raytrace\", ScriptingLanguage.None },\n                { \"shader\", ScriptingLanguage.None },\n                { \"template\", ScriptingLanguage.None },\n                { \"uss\", ScriptingLanguage.None },\n                { \"uxml\", ScriptingLanguage.None }\n            };\n\n        readonly string m_SolutionProjectEntryTemplate = string.Join(\n                \"\\r\\n\",\n                @\"Project(\"\"{{{0}}}\"\") = \"\"{1}\"\", \"\"{2}\"\", \"\"{{{3}}}\"\"\",\n                \"EndProject\"\n            )\n            .Replace(\"    \", \"\\t\");\n\n        readonly string m_SolutionProjectConfigurationTemplate = string.Join(\n                \"\\r\\n\",\n                \"        {{{0}}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\",\n                \"        {{{0}}}.Debug|Any CPU.Build.0 = Debug|Any CPU\"\n            )\n            .Replace(\"    \", \"\\t\");\n\n        static readonly string[] k_ReimportSyncExtensions = { \".dll\", \".asmdef\" };\n\n        string[] m_ProjectSupportedExtensions = Array.Empty<string>();\n\n        const string m_TargetCSharpProjFolders = \"CSharpProjFolders\";\n\n        public string ProjectDirectory { get; }\n        public string CSharpProjFoldersDirectory =>\n            Path.Combine(ProjectDirectory, m_TargetCSharpProjFolders);\n        IAssemblyNameProvider IGenerator.AssemblyNameProvider => m_AssemblyNameProvider;\n\n        readonly string m_ProjectName;\n        readonly IAssemblyNameProvider m_AssemblyNameProvider;\n        readonly IFileIO m_FileIOProvider;\n        readonly IGUIDGenerator m_GUIDProvider;\n\n        const string k_TargetFrameworkVersion = \"net48\";\n\n        public ProjectGeneration(string tempDirectory)\n            : this(\n                tempDirectory,\n                new AssemblyNameProvider(),\n                new FileIOProvider(),\n                new GUIDProvider()\n            )\n        { }\n\n        public ProjectGeneration(\n            string tempDirectory,\n            IAssemblyNameProvider assemblyNameProvider,\n            IFileIO fileIO,\n            IGUIDGenerator guidGenerator\n        )\n        {\n            ProjectDirectory = tempDirectory.NormalizePath();\n            m_ProjectName = Path.GetFileName(ProjectDirectory);\n            m_AssemblyNameProvider = assemblyNameProvider;\n            m_FileIOProvider = fileIO;\n            m_GUIDProvider = guidGenerator;\n\n            if (!m_FileIOProvider.DirectoryExists(CSharpProjFoldersDirectory))\n            {\n                m_FileIOProvider.CreateDirectory(CSharpProjFoldersDirectory);\n            }\n        }\n\n        /// <summary>\n        /// Syncs the scripting solution if any affected files are relevant.\n        /// </summary>\n        /// <returns>\n        /// Whether the solution was synced.\n        /// </returns>\n        /// <param name='affectedFiles'>\n        /// A set of files whose status has changed\n        /// </param>\n        /// <param name=\"reimportedFiles\">\n        /// A set of files that got reimported\n        /// </param>\n        public bool SyncIfNeeded(List<string> affectedFiles, string[] reimportedFiles)\n        {\n            Profiler.BeginSample(\"SolutionSynchronizerSync\");\n            SetupProjectSupportedExtensions();\n\n            if (!HasFilesBeenModified(affectedFiles, reimportedFiles))\n            {\n                Profiler.EndSample();\n                return false;\n            }\n\n            var assemblies = m_AssemblyNameProvider.GetAssemblies(ShouldFileBePartOfSolution);\n            var allProjectAssemblies = RelevantAssembliesForMode(assemblies).ToList();\n            SyncSolution(allProjectAssemblies);\n\n            var allAssetProjectParts = GenerateAllAssetProjectParts();\n\n            var affectedNames = affectedFiles\n                .Select(asset => m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset))\n                .Where(name => !string.IsNullOrWhiteSpace(name))\n                .Select(\n                    name => name.Split(new[] { \".dll\" }, StringSplitOptions.RemoveEmptyEntries)[0]\n                );\n            var reimportedNames = reimportedFiles\n                .Select(asset => m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset))\n                .Where(name => !string.IsNullOrWhiteSpace(name))\n                .Select(\n                    name => name.Split(new[] { \".dll\" }, StringSplitOptions.RemoveEmptyEntries)[0]\n                );\n            var affectedAndReimported = new HashSet<string>(affectedNames.Concat(reimportedNames));\n\n            foreach (var assembly in allProjectAssemblies)\n            {\n                if (!affectedAndReimported.Contains(assembly.name))\n                    continue;\n\n                SyncProject(assembly, allAssetProjectParts, ParseResponseFileData(assembly));\n            }\n\n            Profiler.EndSample();\n            return true;\n        }\n\n        bool HasFilesBeenModified(List<string> affectedFiles, string[] reimportedFiles)\n        {\n            return affectedFiles.Any(ShouldFileBePartOfSolution)\n                || reimportedFiles.Any(ShouldSyncOnReimportedAsset);\n        }\n\n        static bool ShouldSyncOnReimportedAsset(string asset)\n        {\n            return k_ReimportSyncExtensions.Contains(new FileInfo(asset).Extension);\n        }\n\n        private static IEnumerable<SR.MethodInfo> GetPostProcessorCallbacks(string name)\n        {\n            return TypeCache\n                .GetTypesDerivedFrom<AssetPostprocessor>()\n                .Select(\n                    t =>\n                        t.GetMethod(\n                            name,\n                            SR.BindingFlags.Public\n                                | SR.BindingFlags.NonPublic\n                                | SR.BindingFlags.Static\n                        )\n                )\n                .Where(m => m != null);\n        }\n\n        static void OnGeneratedCSProjectFiles()\n        {\n            foreach (var method in GetPostProcessorCallbacks(nameof(OnGeneratedCSProjectFiles)))\n            {\n                _ = method.Invoke(null, Array.Empty<object>());\n            }\n        }\n\n        private static string InvokeAssetPostProcessorGenerationCallbacks(\n            string name,\n            string path,\n            string content\n        )\n        {\n            foreach (var method in GetPostProcessorCallbacks(name))\n            {\n                var args = new[] { path, content };\n                var returnValue = method.Invoke(null, args);\n                if (method.ReturnType == typeof(string))\n                {\n                    // We want to chain content update between invocations\n                    content = (string)returnValue;\n                }\n            }\n\n            return content;\n        }\n\n        private static string OnGeneratedCSProject(string path, string content)\n        {\n            return InvokeAssetPostProcessorGenerationCallbacks(\n                nameof(OnGeneratedCSProject),\n                path,\n                content\n            );\n        }\n\n        private static string OnGeneratedSlnSolution(string path, string content)\n        {\n            return InvokeAssetPostProcessorGenerationCallbacks(\n                nameof(OnGeneratedSlnSolution),\n                path,\n                content\n            );\n        }\n\n        public void Sync()\n        {\n            SetupProjectSupportedExtensions();\n            GenerateAndWriteSolutionAndProjects();\n\n            OnGeneratedCSProjectFiles();\n        }\n\n        public bool SolutionExists()\n        {\n            return m_FileIOProvider.Exists(SolutionFile());\n        }\n\n        void SetupProjectSupportedExtensions()\n        {\n            m_ProjectSupportedExtensions = m_AssemblyNameProvider.ProjectSupportedExtensions;\n        }\n\n        bool ShouldFileBePartOfSolution(string file)\n        {\n            // Exclude files coming from packages except if they are internalized.\n            return !m_AssemblyNameProvider.IsInternalizedPackagePath(file)\n                && HasValidExtension(file);\n        }\n\n        bool HasValidExtension(string file)\n        {\n            string extension = Path.GetExtension(file);\n\n            // Dll's are not scripts but still need to be included..\n            if (extension == \".dll\")\n                return true;\n\n            if (file.ToLower().EndsWith(\".asmdef\"))\n                return true;\n\n            return IsSupportedExtension(extension);\n        }\n\n        bool IsSupportedExtension(string extension)\n        {\n            extension = extension.TrimStart('.');\n            if (k_BuiltinSupportedExtensions.ContainsKey(extension))\n                return true;\n            if (m_ProjectSupportedExtensions.Contains(extension))\n                return true;\n            return false;\n        }\n\n        static ScriptingLanguage ScriptingLanguageFor(Assembly assembly)\n        {\n            return ScriptingLanguageFor(GetExtensionOfSourceFiles(assembly.sourceFiles));\n        }\n\n        static string GetExtensionOfSourceFiles(string[] files)\n        {\n            return files.Length > 0 ? GetExtensionOfSourceFile(files[0]) : \"NA\";\n        }\n\n        static string GetExtensionOfSourceFile(string file)\n        {\n            var ext = Path.GetExtension(file).ToLower();\n            ext = ext[1..]; //strip dot\n            return ext;\n        }\n\n        static ScriptingLanguage ScriptingLanguageFor(string extension)\n        {\n            return k_BuiltinSupportedExtensions.TryGetValue(\n                extension.TrimStart('.'),\n                out var result\n            )\n                ? result\n                : ScriptingLanguage.None;\n        }\n\n        public void GenerateAndWriteSolutionAndProjects()\n        {\n            // Only synchronize assemblies that have associated source files and ones that we actually want in the project.\n            // This also filters out DLLs coming from .asmdef files in packages.\n            var assemblies = m_AssemblyNameProvider\n                .GetAssemblies(ShouldFileBePartOfSolution)\n                .ToArray();\n\n            var allAssetProjectParts = GenerateAllAssetProjectParts();\n\n            SyncSolution(assemblies);\n            var allProjectAssemblies = RelevantAssembliesForMode(assemblies).ToList();\n            foreach (Assembly assembly in allProjectAssemblies)\n            {\n                var responseFileData = ParseResponseFileData(assembly);\n                SyncProject(assembly, allAssetProjectParts, responseFileData);\n            }\n\n            GenerateNugetJsonSourceFiles();\n        }\n\n        List<ResponseFileData> ParseResponseFileData(Assembly assembly)\n        {\n            var systemReferenceDirectories = CompilationPipeline.GetSystemAssemblyDirectories(\n                assembly.compilerOptions.ApiCompatibilityLevel\n            );\n\n            Dictionary<string, ResponseFileData> responseFilesData =\n                assembly.compilerOptions.ResponseFiles.ToDictionary(\n                    x => x,\n                    x =>\n                        m_AssemblyNameProvider.ParseResponseFile(\n                            x,\n                            ProjectDirectory,\n                            systemReferenceDirectories\n                        )\n                );\n\n            Dictionary<string, ResponseFileData> responseFilesWithErrors = responseFilesData\n                .Where(x => x.Value.Errors.Any())\n                .ToDictionary(x => x.Key, x => x.Value);\n\n            if (responseFilesWithErrors.Any())\n            {\n                foreach (var error in responseFilesWithErrors)\n                    foreach (var valueError in error.Value.Errors)\n                    {\n                        Debug.LogError($\"{error.Key} Parse Error : {valueError}\");\n                    }\n            }\n\n            return responseFilesData.Select(x => x.Value).ToList();\n        }\n\n        Dictionary<string, List<XElement>> GenerateAllAssetProjectParts()\n        {\n            Dictionary<string, List<XElement>> stringBuilders = new();\n            foreach (string asset in m_AssemblyNameProvider.GetAllAssetPaths())\n            {\n                // Exclude files coming from packages except if they are internalized.\n                // TODO: We need assets from the assembly API\n                if (m_AssemblyNameProvider.IsInternalizedPackagePath(asset))\n                {\n                    continue;\n                }\n\n                string extension = Path.GetExtension(asset);\n                if (\n                    IsSupportedExtension(extension)\n                    && ScriptingLanguage.None == ScriptingLanguageFor(extension)\n                )\n                {\n                    // Find assembly the asset belongs to by adding script extension and using compilation pipeline.\n                    var assemblyName = m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset);\n\n                    if (string.IsNullOrEmpty(assemblyName))\n                    {\n                        continue;\n                    }\n\n                    assemblyName = Path.GetFileNameWithoutExtension(assemblyName);\n\n                    if (!stringBuilders.TryGetValue(assemblyName, out var projectBuilder))\n                    {\n                        projectBuilder = new List<XElement>();\n                        stringBuilders[assemblyName] = projectBuilder;\n                    }\n\n                    var noneElement = new XElement(\"None\");\n\n                    var fullFile = m_FileIOProvider.EscapedRelativePathFor(asset, ProjectDirectory);\n\n                    fullFile = Path.Combine(ProjectDirectory, fullFile);\n                    noneElement.SetAttributeValue(\"Include\", fullFile);\n                    projectBuilder.Add(noneElement);\n                }\n            }\n\n            var result = new Dictionary<string, List<XElement>>();\n\n            foreach (var entry in stringBuilders)\n            {\n                result[entry.Key] = entry.Value;\n            }\n\n            return result;\n        }\n\n        void SyncProject(\n            Assembly assembly,\n            Dictionary<string, List<XElement>> allAssetsProjectParts,\n            List<ResponseFileData> responseFilesData\n        )\n        {\n            SyncProjectFileIfNotChanged(\n                ProjectFile(assembly),\n                ProjectText(assembly, allAssetsProjectParts, responseFilesData)\n            );\n        }\n\n        void SyncProjectFileIfNotChanged(string path, string newContents)\n        {\n            if (Path.GetExtension(path) == \".csproj\")\n            {\n                newContents = OnGeneratedCSProject(path, newContents);\n            }\n\n            SyncFileIfNotChanged(path, newContents);\n        }\n\n        void SyncSolutionFileIfNotChanged(string path, string newContents)\n        {\n            newContents = OnGeneratedSlnSolution(path, newContents);\n\n            SyncFileIfNotChanged(path, newContents);\n        }\n\n        void SyncFileIfNotChanged(string filename, string newContents)\n        {\n            try\n            {\n                if (\n                    m_FileIOProvider.Exists(filename)\n                    && newContents == m_FileIOProvider.ReadAllText(filename)\n                )\n                {\n                    return;\n                }\n            }\n            catch (Exception exception)\n            {\n                Debug.LogException(exception);\n            }\n\n            m_FileIOProvider.WriteAllText(filename, newContents);\n        }\n\n        private const string SDKStyleCsProj =\n            @\"\n        <Project Sdk=\"\"Microsoft.NET.Sdk\"\">\n        <PropertyGroup>\n            <TargetFramework>netstandard2.1</TargetFramework>\n            <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>\n            <GenerateAssemblyInfo>false</GenerateAssemblyInfo>\n        </PropertyGroup>\n        <PropertyGroup>\n            <DefaultItemExcludes>$(DefaultItemExcludes);Library/;**/*.*</DefaultItemExcludes>\n            <EnableDefaultCompileItems>false</EnableDefaultCompileItems>\n        </PropertyGroup>\n        </Project>\n        \";\n\n        string ProjectText(\n            Assembly assembly,\n            Dictionary<string, List<XElement>> allAssetsProjectParts,\n            List<ResponseFileData> responseFilesData\n        )\n        {\n            // We parse the sdk style project into an XML Document we can then add to :D\n            var document = XDocument.Parse(SDKStyleCsProj);\n            var project = document.Element(\"Project\");\n            var targetFrameWork = project.Elements().First().Element(\"TargetFramework\");\n\n            var targetGroup = BuildPipeline.GetBuildTargetGroup(\n                EditorUserBuildSettings.activeBuildTarget\n            );\n\n            var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(targetGroup);\n\n            var netSettings = PlayerSettings.GetApiCompatibilityLevel(namedBuildTarget);\n\n            targetFrameWork.Value = GetTargetFrameworkVersion(netSettings);\n\n            var otherArguments = GetOtherArgumentsFromResponseFilesData(responseFilesData);\n\n            AddCommonProperties(assembly, responseFilesData, project, otherArguments);\n\n            // we have source files\n            if (assembly.sourceFiles.Length != 0)\n            {\n                var itemGroup = new XElement(\"ItemGroup\");\n\n                foreach (var file in assembly.sourceFiles)\n                {\n                    // It should have the entire path to the source file\n                    var fullFile = m_FileIOProvider.EscapedRelativePathFor(file, ProjectDirectory);\n\n                    fullFile = Path.Combine(ProjectDirectory, fullFile);\n                    itemGroup.Add(\n                        new XElement(\"Compile\", new XAttribute(\"Include\", $\"{fullFile}\"))\n                    );\n                }\n\n                project.Add(itemGroup);\n            }\n\n            //  Append additional non-script files that should be included in project generation.\n            if (\n                allAssetsProjectParts.TryGetValue(assembly.name, out var additionalAssetsForProject)\n            )\n            {\n                var itemGroup = new XElement(\"ItemGroup\");\n                itemGroup.Add(additionalAssetsForProject);\n                project.Add(itemGroup);\n            }\n\n            var responseRefs = responseFilesData.SelectMany(\n                x => x.FullPathReferences.Select(r => r)\n            );\n            var internalAssemblyReferences = assembly.assemblyReferences\n                .Where(i => !i.sourceFiles.Any(ShouldFileBePartOfSolution))\n                .Select(i => i.outputPath);\n            var allReferences = assembly.compiledAssemblyReferences\n                .Union(responseRefs)\n                .Union(internalAssemblyReferences);\n\n            if (allReferences.Any())\n            {\n                var refItemGroup = new XElement(\"ItemGroup\");\n                foreach (var reference in allReferences)\n                {\n                    string fullReference = Path.IsPathRooted(reference)\n                        ? reference\n                        : Path.Combine(ProjectDirectory, reference);\n                    AppendReference(fullReference, refItemGroup, targetFrameWork.Value);\n                }\n\n                project.Add(refItemGroup);\n            }\n\n            if (assembly.assemblyReferences.Any())\n            {\n                var assemblyRefItemGroup = new XElement(\"ItemGroup\");\n                foreach (\n                    Assembly reference in assembly.assemblyReferences.Where(\n                        i => i.sourceFiles.Any(ShouldFileBePartOfSolution)\n                    )\n                )\n                {\n                    var packRefElement = new XElement(\n                        \"ProjectReference\",\n                        new XAttribute(\n                            \"Include\",\n                            // It should have the entire path to the project file\n                            Path.Combine(\n                                CSharpProjFoldersDirectory,\n                                reference.name,\n                                reference.name + GetProjectExtension()\n                            )\n                        ),\n                        new XElement(\"Project\", $\"{ProjectGuid(reference.name)}\"),\n                        new XElement(\"Name\", reference.name + GetProjectExtension())\n                    );\n\n                    assemblyRefItemGroup.Add(packRefElement);\n                }\n\n                project.Add(assemblyRefItemGroup);\n            }\n\n            {\n                var analyzersRefItemGroup = new XElement(\"ItemGroup\");\n\n                var analyzers = RetrieveRoslynAnalyzers(assembly, otherArguments);\n                foreach (var item in analyzers)\n                {\n                    analyzersRefItemGroup.Add(new XElement(\"Analyzer\",\n                        new XAttribute(\"Include\", item)));\n                }\n\n                project.Add(analyzersRefItemGroup);\n            }\n\n            if (\n                m_AssemblyNameProvider.ProjectGenerationFlag.HasFlag(\n                    ProjectGenerationFlag.Analyzers\n                ) || CheckIfAnalyzerIsAllowedOnCSProj(assembly)\n            )\n            {\n                var analyzersRefItemGroup = new XElement(\"ItemGroup\");\n\n                analyzersRefItemGroup.Add(\n                    AddNugetPackageReference(\"Microsoft.Unity.Analyzers\", \"*\", true)\n                );\n\n                project.Add(analyzersRefItemGroup);\n            }\n\n            return document.ToString();\n        }\n\n        private bool CheckIfAnalyzerIsAllowedOnCSProj(Assembly assembly)\n        {\n            return assembly.sourceFiles.Any(\n                x => x.StartsWith(\"Assets\", StringComparison.InvariantCultureIgnoreCase)\n            );\n        }\n\n        private XElement AddNugetPackageReference(string nugetPackageId, string nugetPackageVersion)\n        {\n            return new(\n                \"PackageReference\",\n                new XAttribute(\"Include\", nugetPackageId),\n                new XAttribute(\"Version\", nugetPackageVersion)\n            );\n        }\n\n        private XElement AddNugetPackageReference(\n            string nugetPackageId,\n            string nugetPackageVersion,\n            bool isAnalyzer = false\n        )\n        {\n            return new(\n                \"PackageReference\",\n                new XAttribute(\"Include\", nugetPackageId),\n                new XAttribute(\"Version\", nugetPackageVersion),\n                new XElement(\"PrivateAssets\", \"all\"),\n                new XElement(\"IncludeAssets\", \"runtime; build; native; contentfiles; analyzers\")\n            );\n        }\n\n        static void AppendReference(\n            string fullReference,\n            XElement projectBuilder,\n            string targetFrameWork\n        )\n        {\n            var escapedFullPath = SecurityElement.Escape(fullReference);\n            escapedFullPath = escapedFullPath.NormalizePath();\n\n            var reference = new XElement(\n                \"Reference\",\n                new XAttribute(\"Include\", Path.GetFileNameWithoutExtension(escapedFullPath))\n            );\n\n#if !UNITY_2023_1_OR_NEWER\n            if (targetFrameWork.Contains(\"netstandard\"))\n                escapedFullPath = HandleEditorReference(escapedFullPath);\n#endif\n\n            var hintPath = new XElement(\"HintPath\") { Value = escapedFullPath };\n            reference.Add(hintPath);\n            projectBuilder.Add(reference);\n        }\n\n#if !UNITY_2023_1_OR_NEWER\n        /*\n            This is a hack to get around the fact that the editor references a bunch of facades that are not in the netstandard2.0 or 2.1\n            We need to replace the references with the ones that are in the netstandard2.0 or 2.1 compat folder\n        */\n        static string HandleEditorReference(string referencePath)\n        {\n            var facadesPath = \"UnityReferenceAssemblies\\\\unity-4.8-api\\\\Facades\\\\\";\n            var referenceName = Path.GetFileNameWithoutExtension(referencePath);\n\n            return referenceName switch\n            {\n                \"Microsoft.Win32.Primitives\"\n                or \"System.AppContext\"\n                or \"System.Collections.Concurrent\"\n                or \"System.Collections.NonGeneric\"\n                or \"System.Collections.Specialized\"\n                or \"System.ComponentModel\"\n                or \"System.ComponentModel.EventBasedAsync\"\n                or \"System.Diagnostics.Contracts\"\n                or \"System.Diagnostics.Debug\"\n                or \"System.Diagnostics.Tools\"\n                or \"System.Diagnostics.Tracing\"\n                or \"System.Globalization\"\n                or \"System.Globalization.Calendars\"\n                or \"System.IO\"\n                or \"System.IO.Compression\"\n                or \"System.IO.Compression.ZipFile\"\n                or \"System.IO.FileSystem\"\n                or \"System.IO.FileSystem.Primitives\"\n                or \"System.Linq\"\n                or \"System.Linq.Expressions\"\n                or \"System.Net.Http\"\n                or \"System.Net.Primitives\"\n                or \"System.Net.Sockets\"\n                or \"System.ObjectModel\"\n                or \"System.Reflection\"\n                or \"System.Reflection.Extensions\"\n                or \"System.Reflection.Primitives\"\n                or \"System.Resources.ResourceManager\"\n                or \"System.Runtime\"\n                or \"System.Runtime.Extensions\"\n                or \"System.Runtime.Handles\"\n                or \"System.Runtime.InteropServices\"\n                or \"System.Runtime.InteropServices.RuntimeInformation\"\n                or \"System.Runtime.Numerics\"\n                or \"System.Security.Cryptography.Algorithms\"\n                or \"System.Security.Cryptography.Encoding\"\n                or \"System.Security.Cryptography.Primitives\"\n                or \"System.Security.Cryptography.X509Certificates\"\n                or \"System.Text.Encoding\"\n                or \"System.Text.Encoding.Extensions\"\n                or \"System.Text.RegularExpressions\"\n                or \"System.Threading\"\n                or \"System.Threading.Tasks\"\n                or \"System.Threading.Tasks.Parallel\"\n                or \"System.Threading.Thread\"\n                or \"System.Threading.ThreadPool\"\n                or \"System.Threading.Timer\"\n                or \"System.ValueTuple\"\n                or \"System.Xml.ReaderWriter\"\n                or \"System.Xml.XDocument\"\n                or \"System.Xml.XmlDocument\"\n                or \"System.Xml.XmlSerializer\"\n                or \"System.Xml.XPath\"\n                or \"System.Xml.XPath.XDocument\"\n                    => referencePath.Replace(\n                        facadesPath,\n                        $\"NetStandard\\\\compat\\\\2.1.0\\\\shims\\\\netstandard\\\\\"\n                    ),\n                \"System.Runtime.InteropServices.WindowsRuntime\"\n                    => referencePath.Replace(facadesPath, $\"NetStandard\\\\Extensions\\\\2.0.0\\\\\"),\n                \"netstandard\" => referencePath.Replace(facadesPath, $\"NetStandard\\\\2.1.0\\\\\"),\n                _ => referencePath.Replace(facadesPath, $\"NetStandard\\\\compat\\\\2.1.0\\\\shims\\\\\"),\n            };\n        }\n#endif\n\n        private void AddCommonProperties(\n            Assembly assembly,\n            List<ResponseFileData> responseFilesData,\n            XElement builder,\n            ILookup<string, string> otherArguments\n        )\n        {\n            // Language version\n            var langVersion = GenerateLangVersion(otherArguments[\"langversion\"], assembly);\n\n            var commonPropertyGroup = new XElement(\"PropertyGroup\");\n            var langElement = new XElement(\"LangVersion\") { Value = langVersion };\n            commonPropertyGroup.Add(langElement);\n\n            // Allow unsafe code\n            bool allowUnsafeCode =\n                assembly.compilerOptions.AllowUnsafeCode | responseFilesData.Any(x => x.Unsafe);\n\n            var unsafeElement = new XElement(\"AllowUnsafeBlocks\")\n            {\n                Value = allowUnsafeCode.ToString()\n            };\n            commonPropertyGroup.Add(unsafeElement);\n\n            var warningLevel = new XElement(\"WarningLevel\", \"4\");\n            commonPropertyGroup.Add(warningLevel);\n\n            var noStdLib = new XElement(\"NoStdLib\", \"true\");\n            commonPropertyGroup.Add(noStdLib);\n\n            var assemblyNameElement = new XElement(\"AssemblyName\", assembly.name);\n            commonPropertyGroup.Add(assemblyNameElement);\n\n            // we need to grab all the defines and add them to a property group\n            var defines = string.Join(\n                \";\",\n                new[] { \"DEBUG\", \"TRACE\" }\n                    .Concat(assembly.defines)\n                    .Concat(responseFilesData.SelectMany(x => x.Defines))\n                    .Concat(EditorUserBuildSettings.activeScriptCompilationDefines)\n                    .Distinct()\n                    .ToArray()\n            );\n            var definePropertyGroup = new XElement(\"PropertyGroup\");\n            var definesElement = new XElement(\"DefineConstants\") { Value = defines };\n            definePropertyGroup.Add(definesElement);\n            builder.Add(definePropertyGroup);\n\n            var ruleSets = GenerateRoslynAnalyzerRulesetPath(assembly, otherArguments);\n\n            if (ruleSets.Length != 0)\n            {\n                foreach (var item in ruleSets)\n                {\n                    var ruleElement = new XElement(\"CodeAnalysisRuleSet\") { Value = item };\n                    commonPropertyGroup.Add(ruleElement);\n                }\n            }\n\n            builder.Add(commonPropertyGroup);\n        }\n\n        public string ProjectFile(Assembly assembly)\n        {\n            var fileBuilder = new StringBuilder(assembly.name);\n            _ = fileBuilder.Append(\".csproj\");\n\n            string csharpProjectFolderPath = Path.Combine(\n                CSharpProjFoldersDirectory,\n                assembly.name\n            );\n\n            if (!m_FileIOProvider.DirectoryExists(csharpProjectFolderPath))\n            {\n                m_FileIOProvider.CreateDirectory(csharpProjectFolderPath);\n            }\n\n            return Path.Combine(csharpProjectFolderPath, fileBuilder.ToString());\n        }\n\n        public string SolutionFile()\n        {\n            return Path.Combine(ProjectDirectory, $\"{m_ProjectName}.sln\");\n        }\n\n        private static string GenerateLangVersion(\n            IEnumerable<string> langVersionList,\n            Assembly assembly\n        )\n        {\n            var langVersion = langVersionList.FirstOrDefault();\n            return !string.IsNullOrWhiteSpace(langVersion)\n                ? langVersion\n                : assembly.compilerOptions.LanguageVersion;\n        }\n\n        private static string[] GenerateRoslynAnalyzerRulesetPath(\n            Assembly assembly,\n            ILookup<string, string> otherResponseFilesData\n        )\n        {\n            return otherResponseFilesData[\"ruleset\"]\n                .Append(assembly.compilerOptions.RoslynAnalyzerRulesetPath)\n                .Where(a => !string.IsNullOrEmpty(a))\n                .Distinct()\n                .Select(x => MakeAbsolutePath(x).NormalizePath())\n                .ToArray();\n        }\n\n        string[] RetrieveRoslynAnalyzers(Assembly assembly, ILookup<string, string> otherArguments)\n        {\n            return otherArguments[\"analyzer\"].Concat(otherArguments[\"a\"])\n                .SelectMany(x => x.Split(';'))\n                .Concat(assembly.compilerOptions.RoslynAnalyzerDllPaths)\n                .Select(MakeAbsolutePath)\n                .Distinct()\n                .ToArray();\n        }\n\n        private static string MakeAbsolutePath(string path)\n        {\n            return Path.IsPathRooted(path) ? path : Path.GetFullPath(path);\n        }\n\n        private static ILookup<string, string> GetOtherArgumentsFromResponseFilesData(\n            List<ResponseFileData> responseFilesData\n        )\n        {\n            var paths = responseFilesData\n                .SelectMany(x =>\n                {\n                    return x.OtherArguments\n                        .Where(a => a.StartsWith(\"/\") || a.StartsWith(\"-\"))\n                        .Select(b =>\n                        {\n                            var index = b.IndexOf(\":\", StringComparison.Ordinal);\n                            if (index > 0 && b.Length > index)\n                            {\n                                var key = b[1..index];\n                                return new KeyValuePair<string, string>(key, b[(index + 1)..]);\n                            }\n\n                            const string warnAsError = \"warnaserror\";\n                            return b[1..].StartsWith(warnAsError)\n                                ? new KeyValuePair<string, string>(\n                                    warnAsError,\n                                    b[(warnAsError.Length + 1)..]\n                                )\n                                : default;\n                        });\n                })\n                .Distinct()\n                .ToLookup(o => o.Key, pair => pair.Value);\n            return paths;\n        }\n\n        static string GetSolutionText()\n        {\n            return string.Join(\n                    \"\\r\\n\",\n                    \"\",\n                    \"Microsoft Visual Studio Solution File, Format Version {0}\",\n                    \"# Visual Studio {1}\",\n                    \"{2}\",\n                    \"Global\",\n                    \"    GlobalSection(SolutionConfigurationPlatforms) = preSolution\",\n                    \"        Debug|Any CPU = Debug|Any CPU\",\n                    \"    EndGlobalSection\",\n                    \"    GlobalSection(ProjectConfigurationPlatforms) = postSolution\",\n                    \"{3}\",\n                    \"    EndGlobalSection\",\n                    \"    GlobalSection(SolutionProperties) = preSolution\",\n                    \"        HideSolutionNode = FALSE\",\n                    \"    EndGlobalSection\",\n                    \"EndGlobal\",\n                    \"\"\n                )\n                .Replace(\"    \", \"\\t\");\n        }\n\n        private static string GetTargetFrameworkVersion(ApiCompatibilityLevel netSettings)\n        {\n            return netSettings switch\n            {\n                ApiCompatibilityLevel.NET_2_0\n                or ApiCompatibilityLevel.NET_2_0_Subset\n                or ApiCompatibilityLevel.NET_Web\n                or ApiCompatibilityLevel.NET_Micro\n                    => k_TargetFrameworkVersion,\n                ApiCompatibilityLevel.NET_Standard => \"netstandard2.1\",\n                ApiCompatibilityLevel.NET_Unity_4_8 => k_TargetFrameworkVersion,\n                _ => throw new ArgumentOutOfRangeException()\n            };\n        }\n\n        void SyncSolution(IEnumerable<Assembly> assemblies)\n        {\n            SyncSolutionFileIfNotChanged(SolutionFile(), SolutionText(assemblies));\n        }\n\n        string SolutionText(IEnumerable<Assembly> assemblies)\n        {\n            var fileVersion = \"11.00\";\n            var vsVersion = \"2022\";\n\n            var relevantAssemblies = RelevantAssembliesForMode(assemblies);\n            string projectEntries = GetProjectEntries(relevantAssemblies);\n            string projectConfigurations = string.Join(\n                k_WindowsNewline,\n                relevantAssemblies\n                    .Select(i => GetProjectActiveConfigurations(ProjectGuid(i.name)))\n                    .ToArray()\n            );\n            return string.Format(\n                GetSolutionText(),\n                fileVersion,\n                vsVersion,\n                projectEntries,\n                projectConfigurations\n            );\n        }\n\n        static IEnumerable<Assembly> RelevantAssembliesForMode(IEnumerable<Assembly> assemblies)\n        {\n            return assemblies.Where(i => ScriptingLanguage.CSharp == ScriptingLanguageFor(i));\n        }\n\n        /// <summary>\n        /// Get a Project(\"{guid}\") = \"MyProject\", \"{m_TargetCSharpProjFolders}/{projectFileName}/MyProject.csproj\", \"{projectGuid}\"\n        /// /// entry for each relevant language\n        /// </summary>\n        string GetProjectEntries(IEnumerable<Assembly> assemblies)\n        {\n            var projectEntries = assemblies.Select(i =>\n            {\n                var projectName = Path.GetFileName(ProjectFile(i));\n\n                var projectFileName = projectName[..^GetProjectExtension().Length];\n\n                return string.Format(\n                    m_SolutionProjectEntryTemplate,\n                    SolutionGuid(i),\n                    i.name,\n                    $\"{m_TargetCSharpProjFolders}/{projectFileName}/{projectName}\",\n                    ProjectGuid(i.name)\n                );\n            });\n\n            return string.Join(k_WindowsNewline, projectEntries.ToArray());\n        }\n\n        /// <summary>\n        /// Generate the active configuration string for a given project guid\n        /// </summary>\n        string GetProjectActiveConfigurations(string projectGuid)\n        {\n            return string.Format(m_SolutionProjectConfigurationTemplate, projectGuid);\n        }\n\n        string ProjectGuid(string assembly)\n        {\n            return m_GUIDProvider.ProjectGuid(m_ProjectName, assembly);\n        }\n\n        string SolutionGuid(Assembly assembly)\n        {\n            return m_GUIDProvider.SolutionGuid(\n                m_ProjectName,\n                GetExtensionOfSourceFiles(assembly.sourceFiles)\n            );\n        }\n\n        static string GetProjectExtension()\n        {\n            return \".csproj\";\n        }\n\n        void GenerateNugetJsonSourceFiles()\n        {\n            string dotnetCommand = GetDotnetCommand();\n\n            if (dotnetCommand == null)\n            {\n                Debug.Log(\n                    \"Could not find a compatible dotnet command. Aborting Nuget Json generation.\"\n                );\n                return;\n            }\n\n            string dotnetArguments = GetDotnetArguments();\n\n            if (dotnetArguments == null)\n            {\n                Debug.Log(\n                    \"Could not find a compatible dotnet arguments. Aborting Nuget Json generation.\"\n                );\n                return;\n            }\n\n            using var process = new System.Diagnostics.Process();\n            var processStartInfo = new System.Diagnostics.ProcessStartInfo\n            {\n                FileName = dotnetCommand,\n                Arguments = dotnetArguments,\n                UseShellExecute = false,\n                CreateNoWindow = true\n            };\n\n            process.StartInfo = processStartInfo;\n            process.Start();\n            process.WaitForExit();\n        }\n\n        string GetDotnetCommand()\n        {\n#if UNITY_EDITOR_WIN\n            return \"dotnet\";\n#elif UNITY_EDITOR_LINUX\n            return \"/bin/bash\";\n#elif UNITY_EDITOR_OSX\n            return \"/bin/zsh\";\n#else\n            return null;\n#endif\n        }\n\n        string GetDotnetArguments()\n        {\n#if UNITY_EDITOR_WIN\n            return \"build\";\n#elif UNITY_EDITOR_LINUX || UNITY_EDITOR_OSX\n            return \"-c \\\"dotnet build\\\"\";\n#else\n            return null;\n#endif\n        }\n    }\n\n    public static class SolutionGuidGenerator\n    {\n        static readonly MD5 mD5 = MD5CryptoServiceProvider.Create();\n\n        public static string GuidForProject(string projectName)\n        {\n            return ComputeGuidHashFor(projectName + \"salt\");\n        }\n\n        public static string GuidForSolution(string projectName, string sourceFileExtension)\n        {\n            return \"FAE04EC0-301F-11D3-BF4B-00C04F79EFBC\";\n        }\n\n        static string ComputeGuidHashFor(string input)\n        {\n            var hash = mD5.ComputeHash(Encoding.Default.GetBytes(input));\n            return new Guid(hash).ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration/ProjectGeneration.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5eed56b72d1122d4e950113f932d41ec\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/ProjectGeneration.meta",
    "content": "fileFormatVersion: 2\nguid: 30a0fd482e4d87a46b906fbdf28e9505\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils/FileIO.cs",
    "content": "using System;\nusing System.IO;\nusing System.Security;\nusing System.Text;\n\nnamespace VSCodeEditor\n{\n    public interface IFileIO\n    {\n        bool Exists(string fileName);\n        string ReadAllText(string fileName);\n        void WriteAllText(string fileName, string content);\n        void Copy(string sourceFileName, string destFileName, bool overwrite);\n        void CreateDirectory(string pathName);\n        bool DirectoryExists(string pathName);\n        string EscapedRelativePathFor(string file, string projectDirectory);\n    }\n\n    internal class FileIOProvider : IFileIO\n    {\n        public bool Exists(string fileName)\n        {\n            return File.Exists(fileName);\n        }\n\n        public string ReadAllText(string fileName)\n        {\n            return File.ReadAllText(fileName);\n        }\n\n        public void WriteAllText(string fileName, string content)\n        {\n            File.WriteAllText(fileName, content, Encoding.UTF8);\n        }\n\n        public void Copy(string sourceFileName, string destFileName, bool overwrite)\n        {\n            File.Copy(sourceFileName, destFileName, overwrite);\n        }\n\n        public void CreateDirectory(string pathName)\n        {\n            _ = Directory.CreateDirectory(pathName);\n        }\n\n        public bool DirectoryExists(string pathName)\n        {\n            return Directory.Exists(pathName);\n        }\n\n        public string EscapedRelativePathFor(string file, string projectDirectory)\n        {\n            string projectDir = Path.GetFullPath(projectDirectory);\n\n            // We have to normalize the path, because the PackageManagerRemapper assumes\n            // dir seperators will be os specific.\n            string absolutePath = Path.GetFullPath(file.NormalizePath());\n            string path = SkipPathPrefix(absolutePath, projectDir);\n\n            return SecurityElement.Escape(path);\n        }\n\n        private static string SkipPathPrefix(string path, string prefix)\n        {\n            return path.StartsWith(\n                $\"{prefix}{Path.DirectorySeparatorChar}\",\n                StringComparison.Ordinal\n            )\n                ? path[(prefix.Length + 1)..]\n                : path;\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils/FileIO.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1e96497b50e5e174f8a532311e9eb9e6\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils/FlagHandler.cs",
    "content": "using System;\nusing UnityEditor;\n\nnamespace VSCodeEditor\n{\n    [Flags]\n    public enum ArgumentFlag\n    {\n        None = 0,\n        EditorArgument = 1,\n    }\n\n    [Flags]\n    public enum ConfigFlag\n    {\n        None = 0,\n        VSCode = 1,\n        Workspace = 2,\n        EditorConfig = 4,\n        LaunchConfig = 8,\n    }\n\n    [Flags]\n    public enum ProjectGenerationFlag\n    {\n        None = 0,\n        Embedded = 1,\n        Local = 2,\n        Registry = 4,\n        Git = 8,\n        BuiltIn = 16,\n        Unknown = 32,\n        PlayerAssemblies = 64,\n        LocalTarBall = 128,\n        Analyzers = 256,\n    }\n\n    public interface IFlagHandler\n    {\n        ArgumentFlag ArgumentFlag { get; }\n        ConfigFlag ConfigFlag { get; }\n        ProjectGenerationFlag ProjectGenerationFlag { get; }\n        void ToggleArgument(ArgumentFlag preference);\n        void ToggleConfig(ConfigFlag preference);\n        void ToggleProjectGeneration(ProjectGenerationFlag preference);\n    }\n\n    internal class FlagHandler : IFlagHandler\n    {\n        private ArgumentFlag m_ArgumentFlag = (ArgumentFlag)\n            EditorPrefs.GetInt(\"unity_argument_flag\", 0);\n\n        private ConfigFlag m_ConfigFlag = (ConfigFlag)EditorPrefs.GetInt(\"unity_config_flag\", 0);\n\n        private ProjectGenerationFlag m_ProjectGenerationFlag = (ProjectGenerationFlag)\n            EditorPrefs.GetInt(\"unity_project_generation_flag\", 0);\n\n        public ArgumentFlag ArgumentFlag\n        {\n            get => m_ArgumentFlag;\n            private set\n            {\n                EditorPrefs.SetInt(\"unity_argument_flag\", (int)value);\n                m_ArgumentFlag = value;\n            }\n        }\n\n        public ConfigFlag ConfigFlag\n        {\n            get => m_ConfigFlag;\n            private set\n            {\n                EditorPrefs.SetInt(\"unity_config_flag\", (int)value);\n                m_ConfigFlag = value;\n            }\n        }\n\n        public ProjectGenerationFlag ProjectGenerationFlag\n        {\n            get => m_ProjectGenerationFlag;\n            private set\n            {\n                EditorPrefs.SetInt(\"unity_project_generation_flag\", (int)value);\n                m_ProjectGenerationFlag = value;\n            }\n        }\n\n        public void ToggleArgument(ArgumentFlag preference)\n        {\n            if (ArgumentFlag.HasFlag(preference))\n            {\n                ArgumentFlag ^= preference;\n            }\n            else\n            {\n                ArgumentFlag |= preference;\n            }\n        }\n\n        public void ToggleConfig(ConfigFlag preference)\n        {\n            if (ConfigFlag.HasFlag(preference))\n            {\n                ConfigFlag ^= preference;\n            }\n            else\n            {\n                ConfigFlag |= preference;\n            }\n        }\n\n        public void ToggleProjectGeneration(ProjectGenerationFlag preference)\n        {\n            if (ProjectGenerationFlag.HasFlag(preference))\n            {\n                ProjectGenerationFlag ^= preference;\n            }\n            else\n            {\n                ProjectGenerationFlag |= preference;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils/FlagHandler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4932efa058563fd45ada5f39e72bfade\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils/StringUtils.cs",
    "content": "using System.IO;\nusing System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"Unity.VSCode.EditorTests\")]\n\nnamespace VSCodeEditor\n{\n    internal static class StringUtils\n    {\n        private const char WinSeparator = '\\\\';\n        private const char UnixSeparator = '/';\n\n        public static string NormalizePath(this string path)\n        {\n            if (string.IsNullOrEmpty(path))\n                return path;\n\n            if (Path.DirectorySeparatorChar == WinSeparator)\n                path = path.Replace(UnixSeparator, WinSeparator);\n            if (Path.DirectorySeparatorChar == UnixSeparator)\n                path = path.Replace(WinSeparator, UnixSeparator);\n\n            return path.Replace(string.Concat(WinSeparator, WinSeparator), WinSeparator.ToString());\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils/StringUtils.cs.meta",
    "content": "﻿fileFormatVersion: 2\nguid: e3a861079cb0eee4e907fa962a5029d7\ntimeCreated: 1624968755"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/Utils.meta",
    "content": "fileFormatVersion: 2\nguid: 8113e8886076ba24c8ff9319fc9a43ce\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/VSCodeDiscovery.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Unity.CodeEditor;\n\nnamespace VSCodeEditor\n{\n    public interface IDiscovery\n    {\n        CodeEditor.Installation[] PathCallback();\n    }\n\n    public class VSCodeDiscovery : IDiscovery\n    {\n        List<CodeEditor.Installation> m_Installations;\n\n        public CodeEditor.Installation[] PathCallback()\n        {\n            if (m_Installations == null)\n            {\n                m_Installations = new List<CodeEditor.Installation>();\n                FindInstallationPaths();\n            }\n\n            return m_Installations.ToArray();\n        }\n\n        void FindInstallationPaths()\n        {\n            string[] possiblePaths =\n#if UNITY_EDITOR_OSX\n            {\n                \"/Applications/Visual Studio Code.app\",\n                \"/Applications/Visual Studio Code - Insiders.app\"\n            };\n#elif UNITY_EDITOR_WIN\n            {\n                GetProgramFiles() + \"/Microsoft VS Code/bin/code.cmd\",\n                GetProgramFiles() + \"/Microsoft VS Code/Code.exe\",\n                GetProgramFiles() + \"/Microsoft VS Code Insiders/bin/code-insiders.cmd\",\n                GetProgramFiles() + \"/Microsoft VS Code Insiders/Code.exe\",\n                GetLocalAppData() + \"/Programs/Microsoft VS Code/bin/code.cmd\",\n                GetLocalAppData() + \"/Programs/Microsoft VS Code/Code.exe\",\n                GetLocalAppData() + \"/Programs/Microsoft VS Code Insiders/bin/code-insiders.cmd\",\n                GetLocalAppData() + \"/Programs/Microsoft VS Code Insiders/Code.exe\",\n            };\n#else\n            {\n                \"/usr/bin/code\",\n                \"/bin/code\",\n                \"/usr/local/bin/code\",\n                \"/var/lib/flatpak/exports/bin/com.visualstudio.code\",\n                \"/snap/current/bin/code\",\n                \"/snap/bin/code\"\n            };\n#endif\n            List<string> existingPaths = possiblePaths.Where(VSCodeExists).ToList();\n            if (!existingPaths.Any())\n            {\n                return;\n            }\n\n            string lcp = GetLongestCommonPrefix(existingPaths);\n            switch (existingPaths.Count)\n            {\n                case 1:\n                    string path = existingPaths[0];\n                    m_Installations = new List<CodeEditor.Installation>\n                    {\n                        new CodeEditor.Installation\n                        {\n                            Path = path,\n                            Name = path.Contains(\"Insiders\")\n                                ? \"Visual Studio Code Insiders\"\n                                : \"Visual Studio Code\"\n                        }\n                    };\n                    break;\n\n                case 2\n                    when existingPaths.Any(\n                        path =>\n                            !(path[lcp.Length..].Contains(\"/\") || path[lcp.Length..].Contains(\"\\\\\"))\n                    ):\n                    goto case 1;\n\n                default:\n                    m_Installations = existingPaths.ConvertAll(\n                        path =>\n                            new CodeEditor.Installation\n                            {\n                                Name = $\"Visual Studio Code Insiders ({path[lcp.Length..]})\",\n                                Path = path\n                            }\n                    );\n\n                    break;\n            }\n        }\n\n#if UNITY_EDITOR_WIN\n        static string GetProgramFiles()\n        {\n            return Environment.GetEnvironmentVariable(\"ProgramFiles\")?.Replace(\"\\\\\", \"/\");\n        }\n\n        static string GetLocalAppData()\n        {\n            return Environment.GetEnvironmentVariable(\"LOCALAPPDATA\")?.Replace(\"\\\\\", \"/\");\n        }\n#endif\n\n        static string GetLongestCommonPrefix(List<string> paths)\n        {\n            int baseLength = paths[0].Length;\n            for (int pathIndex = 1; pathIndex < paths.Count; pathIndex++)\n            {\n                baseLength = Math.Min(baseLength, paths[pathIndex].Length);\n                for (int i = 0; i < baseLength; i++)\n                {\n                    if (paths[pathIndex][i] == paths[0][i])\n                    {\n                        continue;\n                    }\n\n                    baseLength = i;\n                    break;\n                }\n            }\n\n            return paths[0][..baseLength];\n        }\n\n        static bool VSCodeExists(string path)\n        {\n#if UNITY_EDITOR_OSX\n            return System.IO.Directory.Exists(path);\n#else\n            return new FileInfo(path).Exists;\n#endif\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/VSCodeDiscovery.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 38feec545dff76046aae249973820c62\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/VSCodeScriptEditor.cs",
    "content": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Collections.Generic;\nusing Unity.CodeEditor;\nusing UnityEditor;\nusing UnityEngine;\n\nnamespace VSCodeEditor\n{\n    [InitializeOnLoad]\n    public class VSCodeScriptEditor : IExternalCodeEditor\n    {\n        const string vscode_argument = \"vscode_arguments\";\n        const string vscode_extension = \"vscode_userExtensions\";\n\n        string m_EditorArguments;\n\n        bool m_ShowEditorSection = false;\n        bool m_ShowExtensionsSection = false;\n        bool m_ShowConfigSection = false;\n        bool m_ShowProjectSection = true;\n        bool m_ShowVSCodeSettingsSection = false;\n        bool m_ShowWorkspaceSection = false;\n        bool m_ShowEditorConfigSection = false;\n        bool m_ShowLaunchConfigSection = false;\n        bool m_ShowBuiltInExtensions = true;\n        bool m_ShowUnityUserExtensions = true;\n        bool m_ShowTSKCustomExtensions = true;\n\n        Vector2 m_VSCodeScrollPosition;\n        Vector2 m_WorkspaceScrollPosition;\n        Vector2 m_EditorConfigScrollPosition;\n        Vector2 m_LaunchConfigScrollPosition;\n\n        readonly IDiscovery m_Discoverability;\n        readonly IGenerator m_ProjectGeneration;\n        readonly IConfigGenerator m_ConfigGeneration;\n\n        static readonly string[] k_SupportedFileNames =\n        {\n            \"code.exe\",\n            \"visualstudiocode.app\",\n            \"visualstudiocode-insiders.app\",\n            \"vscode.app\",\n            \"code.app\",\n            \"code.cmd\",\n            \"code-insiders.cmd\",\n            \"code\",\n            \"com.visualstudio.code\"\n        };\n\n        static bool IsOSX => Application.platform == RuntimePlatform.OSXEditor;\n\n        static string DefaultApp => EditorPrefs.GetString(\"kScriptsDefaultApp\");\n\n        static string ExternalEditorDefaultArgument { get; } =\n            \"\\\"$(ProjectPath)\\\" -g \\\"$(File)\\\":$(Line):$(Column)\";\n\n        static string ExternalEditorWorkplaceDefaultArgument { get; } =\n            \"\\\"$(ProjectPath)/$(ProjectName).code-workspace\\\" -g \\\"$(File)\\\":$(Line):$(Column)\";\n\n        string EditorArguments\n        {\n            get =>\n                m_EditorArguments ??= EditorPrefs.GetString(\n                    vscode_argument,\n                    ExternalEditorDefaultArgument\n                );\n            set\n            {\n                m_EditorArguments = value;\n                EditorPrefs.SetString(vscode_argument, value);\n            }\n        }\n\n        static string[] UserAddedExtensions\n        {\n            get => EditorPrefs.GetString(\"vscode_userAddedExtensions\", \"\").Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);\n            set => EditorPrefs.SetString(\"vscode_userAddedExtensions\", string.Join(\";\", value));\n        }\n\n        #region EditorPrefs Bool Sections\n\n        bool ShowEditorSection\n        {\n            get => m_ShowEditorSection || EditorPrefs.GetBool(\"vscode_showEditorSection\", false);\n            set\n            {\n                m_ShowEditorSection = value;\n                EditorPrefs.SetBool(\"vscode_showEditorSection\", value);\n            }\n        }\n\n        bool ShowExtensionsSection\n        {\n            get =>\n                m_ShowExtensionsSection\n                || EditorPrefs.GetBool(\"vscode_showExtensionsSection\", false);\n            set\n            {\n                m_ShowExtensionsSection = value;\n                EditorPrefs.SetBool(\"vscode_showExtensionsSection\", value);\n            }\n        }\n\n        bool ShowConfigSection\n        {\n            get => m_ShowConfigSection || EditorPrefs.GetBool(\"vscode_showConfigSection\", false);\n            set\n            {\n                m_ShowConfigSection = value;\n                EditorPrefs.SetBool(\"vscode_showConfigSection\", value);\n            }\n        }\n\n        bool ShowProjectSection\n        {\n            get => m_ShowProjectSection || EditorPrefs.GetBool(\"vscode_showProjectSection\", false);\n            set\n            {\n                m_ShowProjectSection = value;\n                EditorPrefs.SetBool(\"vscode_showProjectSection\", value);\n            }\n        }\n\n        bool ShowBuiltInExtensions\n        {\n            get =>\n                m_ShowBuiltInExtensions\n                || EditorPrefs.GetBool(\"vscode_showBuiltInExtensions\", false);\n            set\n            {\n                m_ShowBuiltInExtensions = value;\n                EditorPrefs.SetBool(\"vscode_showBuiltInExtensions\", value);\n            }\n        }\n\n        bool ShowUnityUserExtensions\n        {\n            get =>\n                m_ShowUnityUserExtensions\n                || EditorPrefs.GetBool(\"vscode_showUnityUserExtensions\", false);\n            set\n            {\n                m_ShowUnityUserExtensions = value;\n                EditorPrefs.SetBool(\"vscode_showUnityUserExtensions\", value);\n            }\n        }\n\n        bool ShowTSKCustomExtensions\n        {\n            get =>\n                m_ShowTSKCustomExtensions\n                || EditorPrefs.GetBool(\"vscode_showTSKCustomExtensions\", false);\n            set\n            {\n                m_ShowTSKCustomExtensions = value;\n                EditorPrefs.SetBool(\"vscode_showTSKCustomExtensions\", value);\n            }\n        }\n\n        bool ShowUserCustomExtensions\n        {\n            get =>\n                EditorPrefs.GetBool(\"vscode_showUserCustomExtensions\", false);\n            set\n            {\n                EditorPrefs.SetBool(\"vscode_showUserCustomExtensions\", value);\n            }\n        }\n\n        #endregion\n\n        #region Extensions Section\n\n        static readonly string[] customExtensions = { \"jslib\", \"json\", \"log\" };\n        private static string[] cachedDefaultExtensions;\n        private static HashSet<string> cachedHandledExtensions;\n\n        public static string[] DefaultExtensions => cachedDefaultExtensions ??= GetDefaultExtensions();\n\n        private static string[] GetDefaultExtensions() =>\n            EditorSettings.projectGenerationBuiltinExtensions\n                .Concat(EditorSettings.projectGenerationUserExtensions)\n                .Concat(customExtensions)\n                .Concat(UserAddedExtensions)\n                .Distinct()\n                .ToArray();\n\n        private static HashSet<string> HandledExtensions => cachedHandledExtensions\n            ??= new(DefaultExtensions.Select(ext => ext.TrimStart('.', '*')));\n\n        private static bool SupportsExtension(string path)\n        {\n            var extension = Path.GetExtension(path)?.TrimStart('.');\n            return extension != null && HandledExtensions.Contains(extension);\n        }\n\n        private string extensionToAdd;\n\n        private void AddUserExtension()\n        {\n            extensionToAdd = extensionToAdd.TrimStart('.');\n\n            var currentExtensions = UserAddedExtensions.ToList();\n            if (!currentExtensions.Contains(extensionToAdd))\n            {\n                currentExtensions.Add(extensionToAdd);\n                UserAddedExtensions = currentExtensions.ToArray();\n            }\n        }\n\n        #endregion\n\n        #region UI\n        public void OnGUI()\n        {\n            RenderEditorSection();\n            RenderExtensionsSection();\n            RenderConfigSection();\n            RenderProjectSection();\n        }\n\n        void RenderEditorSection()\n        {\n            ShowEditorSection = EditorGUILayout.BeginFoldoutHeaderGroup(\n                ShowEditorSection,\n                \"Configure Editor Script Editor Arguments:\"\n            );\n\n            EditorGUILayout.EndFoldoutHeaderGroup();\n\n            if (ShowEditorSection)\n            {\n                EditorGUI.indentLevel++;\n                EditorArguments = EditorGUILayout.TextField(\n                    \"External Script Editor Args\",\n                    EditorArguments\n                );\n                FlagButton(\n                    ArgumentFlag.EditorArgument,\n                    \"Use Code-Workspace\",\n                    \"\",\n                    (handler, flag) => handler.ArgumentFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleArgument(flag)\n                );\n                RegenerateButton(\n                    m_ConfigGeneration.FlagHandler.ArgumentFlag.HasFlag(ArgumentFlag.EditorArgument)\n                        ? \"Reset to Workspace default\"\n                        : \"Reset to default\",\n                    \"Regenerate editor arguments\"\n                );\n                EditorGUI.indentLevel--;\n            }\n        }\n\n        void RenderExtensionsSection()\n        {\n            ShowExtensionsSection = EditorGUILayout.BeginFoldoutHeaderGroup(\n                ShowExtensionsSection,\n                \"Configure Extensions Handled by VSCode:\"\n            );\n\n            EditorGUILayout.EndFoldoutHeaderGroup();\n\n            if (ShowExtensionsSection)\n            {\n                EditorGUI.indentLevel++;\n\n                // Built-in Extensions Foldout\n                ShowBuiltInExtensions = EditorGUILayout.Foldout(ShowBuiltInExtensions, \"Built-in Extensions\", true);\n                if (ShowBuiltInExtensions)\n                {\n                    EditorGUI.BeginDisabledGroup(true);\n                    foreach (var ext in EditorSettings.projectGenerationBuiltinExtensions)\n                    {\n                        EditorGUILayout.TextField(ext);\n                    }\n                    EditorGUI.EndDisabledGroup();\n                }\n\n                // Unity User Extensions Foldout\n                ShowUnityUserExtensions = EditorGUILayout.Foldout(ShowUnityUserExtensions, \"Unity User Extensions\", true);\n                if (ShowUnityUserExtensions)\n                {\n                    EditorGUI.BeginDisabledGroup(true);\n                    foreach (var ext in EditorSettings.projectGenerationUserExtensions)\n                    {\n                        EditorGUILayout.TextField(ext);\n                    }\n                    EditorGUI.EndDisabledGroup();\n                }\n\n                // TSK Custom Extensions Foldout\n                ShowTSKCustomExtensions = EditorGUILayout.Foldout(ShowTSKCustomExtensions, \"TSK Custom Extensions\", true);\n                if (ShowTSKCustomExtensions)\n                {\n                    EditorGUI.BeginDisabledGroup(true);\n                    foreach (var ext in customExtensions)\n                    {\n                        EditorGUILayout.TextField(ext);\n                    }\n                    EditorGUI.EndDisabledGroup();\n                }\n\n                // Custom User Extensions Foldout\n                ShowUserCustomExtensions = EditorGUILayout.Foldout(ShowUserCustomExtensions, \"Custom User Extensions\", true);\n                if (ShowUserCustomExtensions)\n                {\n                    var userExtensions = UserAddedExtensions.ToList();\n                    for (int i = userExtensions.Count - 1; i >= 0; i--)\n                    {\n                        EditorGUILayout.BeginHorizontal();\n                        EditorGUI.BeginDisabledGroup(true);\n                        //Make read-only text field\n                        EditorGUILayout.TextField(userExtensions[i]);\n                        EditorGUI.EndDisabledGroup();\n\n                        if (GUILayout.Button(\"Delete\", GUILayout.Width(60)))\n                        {\n                            userExtensions.RemoveAt(i);\n                            UserAddedExtensions = userExtensions.ToArray();\n                        }\n                        EditorGUILayout.EndHorizontal();\n                    }\n\n                    EditorGUILayout.Space();\n                    // Add Custom User Extensions\n                    EditorGUILayout.LabelField(\"Add Custom User Extension:\", EditorStyles.boldLabel);\n\n                    EditorGUILayout.BeginHorizontal();\n                    EditorGUI.BeginChangeCheck();\n                    var newExtension = EditorGUILayout.TextArea(\"\");\n\n                    if (EditorGUI.EndChangeCheck() && !string.IsNullOrWhiteSpace(newExtension))\n                    {\n                        extensionToAdd = newExtension;\n                    }\n\n                    if (GUILayout.Button(\"Add\", GUILayout.Width(60)))\n                    {\n                        AddUserExtension();\n                    }\n\n                    EditorGUILayout.EndHorizontal();\n                }\n                EditorGUILayout.Space();\n\n                EditorGUI.indentLevel--;\n            }\n        }\n\n        void RenderConfigSection()\n        {\n            ShowConfigSection = EditorGUILayout.BeginFoldoutHeaderGroup(\n                ShowConfigSection,\n                \"Generate config files for:\"\n            );\n\n            EditorGUILayout.EndFoldoutHeaderGroup();\n\n            if (ShowConfigSection)\n            {\n                EditorGUI.indentLevel++;\n                FlagButton(\n                    ConfigFlag.VSCode,\n                    \"VSCode Settings\",\n                    \"\",\n                    (handler, flag) => handler.ConfigFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleConfig(flag)\n                );\n\n                if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.VSCode))\n                    RenderSettingsSection(\n                        ref m_ShowVSCodeSettingsSection,\n                        m_ConfigGeneration.VSCodeSettings,\n                        \"VSCode\",\n                        ref m_VSCodeScrollPosition\n                    );\n\n                FlagButton(\n                    ConfigFlag.Workspace,\n                    \"Workspace\",\n                    \"\",\n                    (handler, flag) => handler.ConfigFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleConfig(flag)\n                );\n\n                if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.Workspace))\n                    RenderSettingsSection(\n                        ref m_ShowWorkspaceSection,\n                        m_ConfigGeneration.WorkspaceSettings,\n                        \"Workspace\",\n                        ref m_WorkspaceScrollPosition\n                    );\n\n                FlagButton(\n                    ConfigFlag.EditorConfig,\n                    \"Editor Config\",\n                    \"\",\n                    (handler, flag) => handler.ConfigFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleConfig(flag)\n                );\n\n                if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.EditorConfig))\n                    RenderSettingsSection(\n                        ref m_ShowEditorConfigSection,\n                        m_ConfigGeneration.EditorConfigSettings,\n                        \"editorconfig\",\n                        ref m_EditorConfigScrollPosition\n                    );\n\n                FlagButton(\n                    ConfigFlag.LaunchConfig,\n                    \"Launch Config\",\n                    \"\",\n                    (handler, flag) => handler.ConfigFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleConfig(flag)\n                );\n\n                if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.LaunchConfig))\n                    RenderSettingsSection(\n                        ref m_ShowLaunchConfigSection,\n                        m_ConfigGeneration.LaunchConfigSettings,\n                        \"Launch\",\n                        ref m_LaunchConfigScrollPosition\n                    );\n\n                RegenerateButton(\"Regenerate\", \"Regenerate config files\");\n                EditorGUI.indentLevel--;\n            }\n        }\n\n        void RenderSettingsSection(\n            ref bool showSection,\n            string settings,\n            string sectionName,\n            ref Vector2 scrollPosition\n        )\n        {\n            showSection = EditorGUILayout.BeginFoldoutHeaderGroup(\n                showSection,\n                $\"Configure {sectionName} Settings:\"\n            );\n\n            EditorGUILayout.EndFoldoutHeaderGroup();\n\n            if (showSection)\n            {\n                scrollPosition = EditorGUILayout.BeginScrollView(\n                    scrollPosition,\n                    GUILayout.Height(EditorGUIUtility.singleLineHeight * 7)\n                );\n                EditorGUI.BeginChangeCheck();\n                settings = EditorGUILayout.TextArea(settings, GUILayout.ExpandHeight(true));\n                EditorGUILayout.EndScrollView();\n\n                if (EditorGUI.EndChangeCheck())\n                {\n                    switch (sectionName)\n                    {\n                        case \"VSCode\":\n                            m_ConfigGeneration.VSCodeSettings = settings;\n                            break;\n                        case \"Workspace\":\n                            m_ConfigGeneration.WorkspaceSettings = settings;\n                            break;\n                        case \"editorconfig\":\n                            m_ConfigGeneration.EditorConfigSettings = settings;\n                            break;\n                        case \"Launch\":\n                            m_ConfigGeneration.LaunchConfigSettings = settings;\n                            break;\n                    }\n                }\n\n                RegenerateButton(\"Reset to default\", $\"Reset {sectionName} settings\");\n                EditorGUILayout.Space();\n            }\n        }\n\n        void RenderProjectSection()\n        {\n            ShowProjectSection = EditorGUILayout.BeginFoldoutHeaderGroup(\n                ShowProjectSection,\n                \"Generate .csproj files for:\"\n            );\n\n            EditorGUILayout.EndFoldoutHeaderGroup();\n\n            if (ShowProjectSection)\n            {\n                EditorGUI.indentLevel++;\n                FlagButton(\n                    ProjectGenerationFlag.Embedded,\n                    \"Embedded packages\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                FlagButton(\n                    ProjectGenerationFlag.Local,\n                    \"Local packages\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                FlagButton(\n                    ProjectGenerationFlag.Registry,\n                    \"Registry packages\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                FlagButton(\n                    ProjectGenerationFlag.Git,\n                    \"Git packages\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                FlagButton(\n                    ProjectGenerationFlag.BuiltIn,\n                    \"Built-in packages\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                FlagButton(\n                    ProjectGenerationFlag.LocalTarBall,\n                    \"Local tarball\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                FlagButton(\n                    ProjectGenerationFlag.Unknown,\n                    \"Packages from unknown sources\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n\n                EditorGUILayout.Space();\n                FlagButton(\n                    ProjectGenerationFlag.Analyzers,\n                    \"Add Analyzers to all .csproj files\",\n                    \"\",\n                    (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag),\n                    (handler, flag) => handler.ToggleProjectGeneration(flag)\n                );\n                RegenerateButton(\"Regenerate\", \"Regenerate project files\");\n                EditorGUI.indentLevel--;\n            }\n        }\n\n        void FlagButton<T>(\n            T flag,\n            string guiMessage,\n            string toolTip,\n            Func<IFlagHandler, T, bool> flagGetter,\n            Action<IFlagHandler, T> flagToggler\n        )\n            where T : Enum\n        {\n            var previousValue = flagGetter(m_ConfigGeneration.FlagHandler, flag);\n            var currentValue = EditorGUILayout.Toggle(\n                new GUIContent(guiMessage, toolTip),\n                previousValue\n            );\n            if (currentValue != previousValue)\n            {\n                flagToggler(m_ConfigGeneration.FlagHandler, flag);\n            }\n        }\n\n        void RegenerateButton(string guiMessage, string command = \"\")\n        {\n            var rect = EditorGUI.IndentedRect(\n                EditorGUILayout.GetControlRect(new GUILayoutOption[] { })\n            );\n            rect.width = 252;\n            if (GUI.Button(rect, new GUIContent(guiMessage)))\n            {\n                switch (command)\n                {\n                    case \"Regenerate editor arguments\":\n                        if (\n                            m_ConfigGeneration.FlagHandler.ArgumentFlag.HasFlag(\n                                ArgumentFlag.EditorArgument\n                            )\n                        )\n                        {\n                            EditorArguments = ExternalEditorWorkplaceDefaultArgument;\n                        }\n                        else\n                        {\n                            EditorArguments = ExternalEditorDefaultArgument;\n                        }\n                        break;\n                    case \"Regenerate config files\":\n                        m_ConfigGeneration.Sync();\n                        break;\n                    case \"Regenerate project files\":\n                        m_ProjectGeneration.Sync();\n                        break;\n                    case \"Reset VSCode settings\":\n                        m_ConfigGeneration.VSCodeSettings = \"\";\n                        break;\n                    case \"Reset Workspace settings\":\n                        m_ConfigGeneration.WorkspaceSettings = \"\";\n                        break;\n                    case \"Reset editorconfig settings\":\n                        m_ConfigGeneration.EditorConfigSettings = \"\";\n                        break;\n                    case \"Reset Launch settings\":\n                        m_ConfigGeneration.LaunchConfigSettings = \"\";\n                        break;\n                    default:\n                        UnityEngine.Debug.LogError(\"Unknown button pressed\");\n                        break;\n                }\n            }\n        }\n\n        #endregion\n\n        #region ProjectSync\n\n        public void CreateIfDoesntExist()\n        {\n            if (!m_ProjectGeneration.SolutionExists())\n            {\n                m_ProjectGeneration.Sync();\n            }\n        }\n\n        public void SyncIfNeeded(\n            string[] addedFiles,\n            string[] deletedFiles,\n            string[] movedFiles,\n            string[] movedFromFiles,\n            string[] importedFiles\n        )\n        {\n            (\n                m_ProjectGeneration.AssemblyNameProvider as IPackageInfoCache\n            )?.ResetPackageInfoCache();\n            m_ProjectGeneration.SyncIfNeeded(\n                addedFiles.Union(deletedFiles).Union(movedFiles).Union(movedFromFiles).ToList(),\n                importedFiles\n            );\n        }\n\n        public void SyncAll()\n        {\n            (\n                m_ProjectGeneration.AssemblyNameProvider as IPackageInfoCache\n            )?.ResetPackageInfoCache();\n            AssetDatabase.Refresh();\n            m_ProjectGeneration.Sync();\n        }\n\n        #endregion\n\n        #region InstallationManagement\n\n        public bool TryGetInstallationForPath(\n                    string editorPath,\n                    out CodeEditor.Installation installation\n                )\n        {\n            var lowerCasePath = editorPath.ToLower();\n            var filename = Path.GetFileName(lowerCasePath).Replace(\" \", \"\");\n            var installations = Installations;\n            if (!k_SupportedFileNames.Contains(filename))\n            {\n                installation = default;\n                return false;\n            }\n\n            if (!installations.Any())\n            {\n                installation = new CodeEditor.Installation\n                {\n                    Name = \"Visual Studio Code\",\n                    Path = editorPath\n                };\n            }\n            else\n            {\n                try\n                {\n                    installation = installations.First(inst => inst.Path == editorPath);\n                }\n                catch (InvalidOperationException)\n                {\n                    installation = new CodeEditor.Installation\n                    {\n                        Name = \"Visual Studio Code\",\n                        Path = editorPath\n                    };\n                }\n            }\n\n            return true;\n        }\n\n        public bool OpenProject(string path, int line, int column)\n        {\n            if (path != \"\" && (!SupportsExtension(path) || !File.Exists(path))) // Assets - Open C# Project passes empty path here\n            {\n                return false;\n            }\n\n            if (line == -1)\n                line = 1;\n            if (column == -1)\n                column = 0;\n\n            var workspacePath =\n                $\"{m_ProjectGeneration.ProjectDirectory}/{Path.GetFileName(m_ProjectGeneration.ProjectDirectory)}.code-workspace\";\n\n            string arguments;\n            if (\n                EditorArguments != ExternalEditorDefaultArgument\n                && EditorArguments != ExternalEditorWorkplaceDefaultArgument\n            )\n            {\n                arguments =\n                    m_ProjectGeneration.ProjectDirectory != path\n                        ? CodeEditor.ParseArgument(EditorArguments, path, line, column)\n                        : workspacePath;\n            }\n            else\n            {\n                arguments = m_ConfigGeneration.FlagHandler.ArgumentFlag.HasFlag(\n                    ArgumentFlag.EditorArgument\n                )\n                    ? $@\"\"\"{workspacePath}\"\"\"\n                    : $@\"\"\"{m_ProjectGeneration.ProjectDirectory}\"\"\";\n                if (m_ProjectGeneration.ProjectDirectory != path && path.Length != 0)\n                {\n                    arguments += $@\" -g \"\"{path}\"\":{line}:{column}\";\n                }\n            }\n\n            if (IsOSX)\n            {\n                return OpenOSX(arguments);\n            }\n\n            var app = DefaultApp;\n            var process = new Process\n            {\n                StartInfo = new ProcessStartInfo\n                {\n                    FileName = app,\n                    Arguments = arguments,\n                    WindowStyle = app.EndsWith(\".cmd\", StringComparison.OrdinalIgnoreCase)\n                        ? ProcessWindowStyle.Hidden\n                        : ProcessWindowStyle.Normal,\n                    CreateNoWindow = true,\n                    UseShellExecute = true,\n                }\n            };\n\n            process.Start();\n            return true;\n        }\n\n        static bool OpenOSX(string arguments)\n        {\n            var process = new Process\n            {\n                StartInfo = new ProcessStartInfo\n                {\n                    FileName = \"open\",\n                    Arguments = $\"-n \\\"{DefaultApp}\\\" --args {arguments}\",\n                    UseShellExecute = true,\n                }\n            };\n\n            process.Start();\n            return true;\n        }\n\n        public CodeEditor.Installation[] Installations => m_Discoverability.PathCallback();\n\n        #endregion\n\n        public VSCodeScriptEditor(\n            IDiscovery discovery,\n            IGenerator projectGeneration,\n            IConfigGenerator configGeneration\n        )\n        {\n            m_Discoverability = discovery;\n            m_ProjectGeneration = projectGeneration;\n            m_ConfigGeneration = configGeneration;\n        }\n\n        static VSCodeScriptEditor()\n        {\n            string projectDirectory = Directory.GetParent(Application.dataPath).FullName;\n\n            var editor = new VSCodeScriptEditor(\n                new VSCodeDiscovery(),\n                new ProjectGeneration(projectDirectory),\n                new ConfigGeneration(projectDirectory)\n            );\n\n            CodeEditor.Register(editor);\n\n            if (IsVSCodeInstallation(CodeEditor.CurrentEditorInstallation))\n            {\n                editor.CreateIfDoesntExist();\n            }\n        }\n\n        static bool IsVSCodeInstallation(string path)\n        {\n            if (string.IsNullOrEmpty(path))\n            {\n                return false;\n            }\n\n            var lowerCasePath = path.ToLower();\n            var filename = Path.GetFileName(\n                    lowerCasePath\n                        .Replace('\\\\', Path.DirectorySeparatorChar)\n                        .Replace('/', Path.DirectorySeparatorChar)\n                )\n                .Replace(\" \", \"\");\n            return k_SupportedFileNames.Contains(filename);\n        }\n\n        public void Initialize(string editorInstallationPath) { }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/VSCodeScriptEditor.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 50dc650e7e1eecc41a307394c0fc88bb\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/com.tsk.vscode.Editor.asmdef",
    "content": "{\n    \"name\": \"com.tsk.vscode.Editor\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [\n        \"Editor\"\n    ],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": [],\n    \"noEngineReferences\": false\n}"
  },
  {
    "path": "com.tsk.ide.vscode/Editor/com.tsk.vscode.Editor.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 68a66ba0bc3fb064697c9ecbc554416a\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: d2ed9e96dece42b4e8326165293ea352\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/LICENSE.md",
    "content": "MIT License\n\nCopyright (c) 2019 Unity Technologies\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "com.tsk.ide.vscode/LICENSE.md.meta",
    "content": "fileFormatVersion: 2\nguid: 71527348c81c34848bbcb2045433e4c8\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/README.md",
    "content": "# com.tsk.ide.vscode\n Unofficial code editor integration for VSCode.\n"
  },
  {
    "path": "com.tsk.ide.vscode/README.md.meta",
    "content": "fileFormatVersion: 2\nguid: ff0da47f44c636048be818cd7d3fcaec\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/ValidationExceptions.json",
    "content": "{\n    \"ErrorExceptions\": [\n        {\n            \"ValidationTest\": \"API Validation\",\n            \"ExceptionMessage\": \"Additions require a new minor or major version.\",\n            \"PackageVersion\": \"1.2.6\"\n        }\n    ],\n    \"WarningExceptions\": []\n}"
  },
  {
    "path": "com.tsk.ide.vscode/ValidationExceptions.json.meta",
    "content": "fileFormatVersion: 2\nguid: 02c903b5e9ff8a040bd951bc6d8129ae\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscode/package.json",
    "content": "{\n    \"name\": \"com.tsk.ide.vscode\",\n    \"displayName\": \"TSK VSCode Editor\",\n    \"description\": \"Unofficial code editor integration for supporting Visual Studio Code as code editor for Unity. Adds support for generating csproj files for intellisense purposes, auto discovery of installations, etc.\",\n    \"version\": \"1.5.0\",\n    \"unity\": \"2021.3\",\n    \"dependencies\": {},\n    \"author\": {\n        \"name\": \"Chizaruu\",\n        \"email\": \"contact@humblegco.com\",\n        \"url\": \"https://github.com/Chizaruu\"\n    },\n    \"keywords\": [\n        \"visual studio code\",\n        \"vscode\",\n        \"code editor\",\n        \"editor\",\n        \"intellisense\",\n        \"c#\",\n        \"csharp\",\n        \"csproj\",\n        \"unity\",\n        \"unity3d\"\n    ],\n    \"repository\": \"https://github.com/Chizaruu/com.tsk.ide.vscode\"\n}\n"
  },
  {
    "path": "com.tsk.ide.vscode/package.json.meta",
    "content": "fileFormatVersion: 2\nguid: a9b685b864215bf43aa9aca239f16300\nPackageManifestImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/.npmignore",
    "content": "build.bat*\n*.tgz*\n*.DotSettings.user*"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/CSProjectTests.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Xml;\nusing NUnit.Framework;\nusing UnityEditor.Compilation;\nusing UnityEditor;\n\nnamespace VSCodeEditor.Tests\n{\n    namespace CSProjectGeneration\n    {\n        class Formatting : ProjectGenerationTestBase\n        {\n            [Test]\n            public void AbsoluteSourceFilePaths_WillBeMadeRelativeToProjectDirectory()\n            {\n                var absoluteFilePath = MakeAbsolutePathTestImplementation(\"dimmer.cs\");\n                var synchronizer = m_Builder\n                    .WithAssemblyData(files: new[] { absoluteFilePath })\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                XmlDocument scriptProject = XMLUtilities.FromText(csprojContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(scriptProject, new[] { \"dimmer.cs\" });\n            }\n\n            [Test]\n            public void DefaultSettings_WhenSynced_CreateWorkspaceFile()\n            {\n                var synchronizer = m_Builder.Build();\n                synchronizer.Sync();\n\n                var projectName = Path.GetFileName(synchronizer.ProjectDirectory); // This could be a public API\n                var workspaceFile = Path.Combine(\n                    synchronizer.ProjectDirectory,\n                    $\"{projectName}.code-workspace\"\n                );\n                var workspaceFileContent = m_Builder.ReadFile(workspaceFile);\n                var content =\n                    @\"{\n\t\"\"folders\"\": [\n\t\t{\n\t\t\t\"\"path\"\": \"\".\"\"\n\t\t}\n\t]\n}\";\n                Assert.That(\n                    workspaceFileContent,\n                    Is.EqualTo(content),\n                    \"Workspace file content was not expected\"\n                );\n            }\n\n            [Test]\n            public void DefaultSyncSettings_WhenSynced_CreatesProjectFileFromDefaultTemplate()\n            {\n                var projectGuid = \"ProjectGuid\";\n                var synchronizer = m_Builder\n                    .WithProjectGuid(projectGuid, m_Builder.Assembly)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                var defines = string.Join(\n                    \";\",\n                    new[] { \"DEBUG\", \"TRACE\" }\n                        .Concat(EditorUserBuildSettings.activeScriptCompilationDefines)\n                        .Concat(m_Builder.Assembly.defines)\n                        .Distinct()\n                        .ToArray()\n                );\n                var content = new[]\n                {\n                    \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\",\n                    \"<Project ToolsVersion=\\\"4.0\\\" DefaultTargets=\\\"Build\\\" xmlns=\\\"http://schemas.microsoft.com/developer/msbuild/2003\\\">\",\n                    \"  <PropertyGroup>\",\n                    $\"    <LangVersion>{Helper.GetLangVersion()}</LangVersion>\",\n                    \"  </PropertyGroup>\",\n                    \"  <PropertyGroup>\",\n                    \"    <Configuration Condition=\\\" '$(Configuration)' == '' \\\">Debug</Configuration>\",\n                    \"    <Platform Condition=\\\" '$(Platform)' == '' \\\">AnyCPU</Platform>\",\n                    \"    <ProductVersion>10.0.20506</ProductVersion>\",\n                    \"    <SchemaVersion>2.0</SchemaVersion>\",\n                    \"    <RootNamespace></RootNamespace>\",\n                    $\"    <ProjectGuid>{{{projectGuid}}}</ProjectGuid>\",\n                    \"    <OutputType>Library</OutputType>\",\n                    \"    <AppDesignerFolder>Properties</AppDesignerFolder>\",\n                    $\"    <AssemblyName>{m_Builder.Assembly.name}</AssemblyName>\",\n                    \"    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\",\n                    \"    <FileAlignment>512</FileAlignment>\",\n                    \"    <BaseDirectory>.</BaseDirectory>\",\n                    \"  </PropertyGroup>\",\n                    \"  <PropertyGroup Condition=\\\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \\\">\",\n                    \"    <DebugSymbols>true</DebugSymbols>\",\n                    \"    <DebugType>full</DebugType>\",\n                    \"    <Optimize>false</Optimize>\",\n                    \"    <OutputPath>Temp\\\\bin\\\\Debug\\\\</OutputPath>\",\n                    $\"    <DefineConstants>{defines}</DefineConstants>\",\n                    \"    <ErrorReport>prompt</ErrorReport>\",\n                    \"    <WarningLevel>4</WarningLevel>\",\n                    \"    <NoWarn>0169</NoWarn>\",\n                    \"    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\",\n                    \"  </PropertyGroup>\",\n                    \"  <PropertyGroup>\",\n                    \"    <NoConfig>true</NoConfig>\",\n                    \"    <NoStdLib>true</NoStdLib>\",\n                    \"    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\",\n                    \"    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\",\n                    \"    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\",\n                    \"  </PropertyGroup>\",\n                    \"  <ItemGroup>\",\n                    \"     <Compile Include=\\\"test.cs\\\" />\",\n                    \"  </ItemGroup>\",\n                    \"  <Import Project=\\\"$(MSBuildToolsPath)\\\\Microsoft.CSharp.targets\\\" />\",\n                    \"  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.\",\n                    \"       Other similar extension points exist, see Microsoft.Common.targets.\",\n                    \"  <Target Name=\\\"BeforeBuild\\\">\",\n                    \"  </Target>\",\n                    \"  <Target Name=\\\"AfterBuild\\\">\",\n                    \"  </Target>\",\n                    \"  -->\",\n                    \"</Project>\",\n                    \"\"\n                };\n\n                StringAssert.AreEqualIgnoringCase(string.Join(\"\\r\\n\", content), csprojContent);\n            }\n        }\n\n        class GUID : ProjectGenerationTestBase\n        {\n            [Test]\n            public void ProjectReference_MatchAssemblyGUID()\n            {\n                string[] files = { \"test.cs\" };\n                var assemblyB = new Assembly(\n                    \"Test\",\n                    \"Temp/Test.dll\",\n                    files,\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var assemblyA = new Assembly(\n                    \"Test2\",\n                    \"some/path/file.dll\",\n                    files,\n                    new string[0],\n                    new[] { assemblyB },\n                    new[] { \"Library.ScriptAssemblies.Test.dll\" },\n                    AssemblyFlags.None\n                );\n                var synchronizer = m_Builder.WithAssemblies(new[] { assemblyA, assemblyB }).Build();\n\n                synchronizer.Sync();\n\n                var assemblyACSproject = SynchronizerBuilder.ProjectFilePath(assemblyA);\n                var assemblyBCSproject = SynchronizerBuilder.ProjectFilePath(assemblyB);\n\n                Assert.True(m_Builder.FileExists(assemblyACSproject));\n                Assert.True(m_Builder.FileExists(assemblyBCSproject));\n\n                XmlDocument scriptProject = XMLUtilities.FromText(\n                    m_Builder.ReadFile(assemblyACSproject)\n                );\n                XmlDocument scriptPluginProject = XMLUtilities.FromText(\n                    m_Builder.ReadFile(assemblyBCSproject)\n                );\n\n                var a = XMLUtilities.GetInnerText(\n                    scriptPluginProject,\n                    \"/msb:Project/msb:PropertyGroup/msb:ProjectGuid\"\n                );\n                var b = XMLUtilities.GetInnerText(\n                    scriptProject,\n                    \"/msb:Project/msb:ItemGroup/msb:ProjectReference/msb:Project\"\n                );\n                Assert.AreEqual(a, b);\n            }\n        }\n\n        class Synchronization : ProjectGenerationTestBase\n        {\n            [Test]\n            public void WontSynchronize_WhenNoFilesChanged()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"One write for solution, one write for csproj, one for workspace file, and one for vscode settings\"\n                );\n\n                synchronizer.Sync();\n                Assert.AreEqual(4, m_Builder.WriteTimes, \"No more files should be written\");\n            }\n\n            [Test]\n            public void WhenSynchronized_WillCreateCSProjectForAssembly()\n            {\n                var synchronizer = m_Builder.Build();\n\n                Assert.IsFalse(\n                    m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(m_Builder.Assembly))\n                );\n\n                synchronizer.Sync();\n\n                Assert.IsTrue(\n                    m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(m_Builder.Assembly))\n                );\n            }\n\n            [Test]\n            public void WhenSynchronized_WithTwoAssemblies_TwoProjectFilesAreGenerated()\n            {\n                var assemblyA = new Assembly(\n                    \"assemblyA\",\n                    \"path/to/a.dll\",\n                    new[] { \"file.cs\" },\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var assemblyB = new Assembly(\n                    \"assemblyB\",\n                    \"path/to/b.dll\",\n                    new[] { \"file.cs\" },\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var synchronizer = m_Builder.WithAssemblies(new[] { assemblyA, assemblyB }).Build();\n\n                synchronizer.Sync();\n\n                Assert.IsTrue(m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(assemblyA)));\n                Assert.IsTrue(m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(assemblyB)));\n            }\n\n            [Test]\n            public void NotInInternalizedPackage_WillResync()\n            {\n                var synchronizer = m_Builder.Build();\n                synchronizer.Sync();\n                var packageAsset = \"packageAsset.cs\";\n                m_Builder.WithPackageAsset(packageAsset, false);\n                Assert.IsTrue(\n                    synchronizer.SyncIfNeeded(new List<string>() { packageAsset }, new string[0])\n                );\n            }\n        }\n\n        class SourceFiles : ProjectGenerationTestBase\n        {\n            [Test]\n            public void NoCSFile_CreatesNoProjectFile()\n            {\n                var synchronizer = m_Builder.WithAssemblyData(files: new string[0]).Build();\n\n                synchronizer.Sync();\n\n                Assert.False(\n                    m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(m_Builder.Assembly)),\n                    \"Should not create csproj file for assembly with no cs file\"\n                );\n            }\n\n            [Test]\n            public void NotContributedAnAssembly_WillNotGetAdded()\n            {\n                var synchronizer = m_Builder.WithAssetFiles(new[] { \"Assembly.hlsl\" }).Build();\n\n                synchronizer.Sync();\n\n                var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.DoesNotContain(\"Assembly.hlsl\", csprojContent);\n            }\n\n            [Test]\n            public void MultipleSourceFiles_WillAllBeAdded()\n            {\n                var files = new[] { \"fileA.cs\", \"fileB.cs\", \"fileC.cs\" };\n                var synchronizer = m_Builder.WithAssemblyData(files: files).Build();\n\n                synchronizer.Sync();\n\n                var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                var xmlDocument = XMLUtilities.FromText(csprojectContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(xmlDocument, files);\n            }\n\n            [Test]\n            public void FullPathAsset_WillBeConvertedToRelativeFromProjectDirectory()\n            {\n                var assetPath = Path.Combine(\"Assets\", \"Asset.cs\");\n                var synchronizer = m_Builder\n                    .WithAssemblyData(\n                        files: new[] { MakeAbsolutePathTestImplementation(assetPath) }\n                    )\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                var xmlDocument = XMLUtilities.FromText(csprojectContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(xmlDocument, new[] { assetPath });\n            }\n\n            [Test]\n            public void InRelativePackages_GetsPathResolvedCorrectly()\n            {\n                var assetPath = \"/FullPath/ExamplePackage/Packages/Asset.cs\";\n                var assembly = new Assembly(\n                    \"ExamplePackage\",\n                    \"/FullPath/Example/ExamplePackage/ExamplePackage.dll\",\n                    new[] { assetPath },\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var synchronizer = m_Builder\n                    .WithAssemblies(new[] { assembly })\n                    .WithPackageInfo(assetPath)\n                    .Build();\n\n                synchronizer.Sync();\n\n                StringAssert.Contains(\n                    assetPath.NormalizePath(),\n                    m_Builder.ReadProjectFile(assembly)\n                );\n            }\n\n            [Test]\n            public void InInternalizedPackage_WillBeAddedToCompileInclude()\n            {\n                var synchronizer = m_Builder\n                    .WithPackageAsset(m_Builder.Assembly.sourceFiles[0], true)\n                    .Build();\n                synchronizer.Sync();\n                StringAssert.Contains(\n                    m_Builder.Assembly.sourceFiles[0],\n                    m_Builder.ReadProjectFile(m_Builder.Assembly)\n                );\n            }\n\n            [Test]\n            public void NotInInternalizedPackage_WillBeAddedToCompileInclude()\n            {\n                var synchronizer = m_Builder\n                    .WithPackageAsset(m_Builder.Assembly.sourceFiles[0], false)\n                    .Build();\n                synchronizer.Sync();\n                StringAssert.Contains(\n                    m_Builder.Assembly.sourceFiles[0],\n                    m_Builder.ReadProjectFile(m_Builder.Assembly)\n                );\n            }\n\n            [Test]\n            public void CSharpFiles_WillBeIncluded()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n\n                var assembly = m_Builder.Assembly;\n                StringAssert.Contains(\n                    assembly.sourceFiles[0].NormalizePath(),\n                    m_Builder.ReadProjectFile(assembly)\n                );\n            }\n\n            [Test]\n            public void NonCSharpFiles_AddedToNonCompileItems()\n            {\n                var nonCompileItems = new[]\n                {\n                    \"UnityShader.uss\",\n                    \"ComputerGraphic.cginc\",\n                    \"Test.shader\",\n                };\n                var synchronizer = m_Builder\n                    .WithAssetFiles(nonCompileItems)\n                    .AssignFilesToAssembly(nonCompileItems, m_Builder.Assembly)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                var xmlDocument = XMLUtilities.FromText(csprojectContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(\n                    xmlDocument,\n                    m_Builder.Assembly.sourceFiles\n                );\n                XMLUtilities.AssertNonCompileItemsMatchExactly(xmlDocument, nonCompileItems);\n            }\n\n            [Test]\n            public void UnsupportedExtensions_WillNotBeAdded()\n            {\n                var unsupported = new[] { \"file.unsupported\" };\n                var synchronizer = m_Builder\n                    .WithAssetFiles(unsupported)\n                    .AssignFilesToAssembly(unsupported, m_Builder.Assembly)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                var xmlDocument = XMLUtilities.FromText(csprojectContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(\n                    xmlDocument,\n                    m_Builder.Assembly.sourceFiles\n                );\n                XMLUtilities.AssertNonCompileItemsMatchExactly(xmlDocument, new string[0]);\n            }\n\n            [Test]\n            public void UnsupportedExtension_IsOverWrittenBy_UserSupportedExtensions()\n            {\n                var unsupported = new[] { \"file.unsupported\" };\n                var synchronizer = m_Builder\n                    .WithAssetFiles(unsupported)\n                    .AssignFilesToAssembly(unsupported, m_Builder.Assembly)\n                    .WithUserSupportedExtensions(new[] { \"unsupported\" })\n                    .Build();\n                synchronizer.Sync();\n                var xmlDocument = XMLUtilities.FromText(\n                    m_Builder.ReadProjectFile(m_Builder.Assembly)\n                );\n                XMLUtilities.AssertNonCompileItemsMatchExactly(xmlDocument, unsupported);\n            }\n\n            [TestCase(@\"path/com.unity.cs\")]\n            [TestCase(@\"../path/file.cs\")]\n            public void IsValidFileName(string filePath)\n            {\n                var synchronizer = m_Builder.WithAssemblyData(files: new[] { filePath }).Build();\n\n                synchronizer.Sync();\n\n                var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(filePath.NormalizePath(), csprojContent);\n            }\n\n            [Test]\n            public void AddedAfterSync_WillBeSynced()\n            {\n                var synchronizer = m_Builder.Build();\n                synchronizer.Sync();\n                const string newFile = \"Newfile.cs\";\n                var newFileArray = new List<string> { newFile };\n                m_Builder.WithAssemblyData(\n                    files: m_Builder.Assembly.sourceFiles.Concat(newFileArray).ToArray()\n                );\n\n                Assert.True(\n                    synchronizer.SyncIfNeeded(newFileArray, new string[0]),\n                    \"Should sync when file in assembly changes\"\n                );\n\n                var csprojContentAfter = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(newFile, csprojContentAfter);\n            }\n\n            [Test]\n            public void Moved_WillBeResynced()\n            {\n                var synchronizer = m_Builder.Build();\n                synchronizer.Sync();\n                var filesBefore = m_Builder.Assembly.sourceFiles;\n                const string newFile = \"Newfile.cs\";\n                var newFiles = new List<string> { newFile };\n                m_Builder.WithAssemblyData(files: newFiles.ToArray());\n\n                Assert.True(\n                    synchronizer.SyncIfNeeded(newFiles, new string[0]),\n                    \"Should sync when file in assembly changes\"\n                );\n\n                var csprojContentAfter = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(newFile, csprojContentAfter);\n                foreach (var file in filesBefore)\n                {\n                    StringAssert.DoesNotContain(file, csprojContentAfter);\n                }\n            }\n\n            [Test]\n            public void Deleted_WillBeRemoved()\n            {\n                var filesBefore = new[] { \"WillBeDeletedScript.cs\", \"Script.cs\", };\n                var synchronizer = m_Builder.WithAssemblyData(files: filesBefore).Build();\n\n                synchronizer.Sync();\n\n                var csprojContentBefore = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(filesBefore[0], csprojContentBefore);\n                StringAssert.Contains(filesBefore[1], csprojContentBefore);\n\n                var filesAfter = filesBefore.Skip(1).ToArray();\n                m_Builder.WithAssemblyData(files: filesAfter);\n\n                Assert.True(\n                    synchronizer.SyncIfNeeded(filesAfter.ToList(), new string[0]),\n                    \"Should sync when file in assembly changes\"\n                );\n\n                var csprojContentAfter = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(filesAfter[0], csprojContentAfter);\n                StringAssert.DoesNotContain(filesBefore[0], csprojContentAfter);\n            }\n\n            [Test, TestCaseSource(nameof(s_BuiltinSupportedExtensionsForSourceFiles))]\n            public void BuiltinSupportedExtensions_InsideAssemblySourceFiles_WillBeAddedToCompileItems(\n                string fileExtension\n            )\n            {\n                var compileItem = new[] { \"file.cs\", $\"anotherFile.{fileExtension}\" };\n                var synchronizer = m_Builder.WithAssemblyData(files: compileItem).Build();\n\n                synchronizer.Sync();\n\n                var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                XmlDocument scriptProject = XMLUtilities.FromText(csprojContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(scriptProject, compileItem);\n            }\n\n            static readonly string[] s_BuiltinSupportedExtensionsForSourceFiles =\n            {\n                \"asmdef\",\n                \"cs\",\n                \"uxml\",\n                \"uss\",\n                \"shader\",\n                \"compute\",\n                \"cginc\",\n                \"hlsl\",\n                \"glslinc\",\n                \"template\",\n                \"raytrace\"\n            };\n\n            [Test, TestCaseSource(nameof(s_BuiltinSupportedExtensionsForAssets))]\n            public void BuiltinSupportedExtensions_InsideAssetFolder_WillBeAddedToNonCompileItems(\n                string fileExtension\n            )\n            {\n                var nonCompileItem = new[] { $\"anotherFile.{fileExtension}\" };\n                var synchronizer = m_Builder\n                    .WithAssetFiles(files: nonCompileItem)\n                    .AssignFilesToAssembly(nonCompileItem, m_Builder.Assembly)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                XmlDocument scriptProject = XMLUtilities.FromText(csprojContent);\n                XMLUtilities.AssertCompileItemsMatchExactly(\n                    scriptProject,\n                    m_Builder.Assembly.sourceFiles\n                );\n                XMLUtilities.AssertNonCompileItemsMatchExactly(scriptProject, nonCompileItem);\n            }\n\n            static readonly string[] s_BuiltinSupportedExtensionsForAssets =\n            {\n                \"uxml\",\n                \"uss\",\n                \"shader\",\n                \"compute\",\n                \"cginc\",\n                \"hlsl\",\n                \"glslinc\",\n                \"template\",\n                \"raytrace\"\n            };\n        }\n\n        class CompilerOptions : ProjectGenerationTestBase\n        {\n            [Test]\n            public void AllowUnsafeFromResponseFile_AddBlockToCsproj()\n            {\n                const string responseFile = \"csc.rsp\";\n                var synchronizer = m_Builder\n                    .WithResponseFileData(m_Builder.Assembly, responseFile, _unsafe: true)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(\n                    \"<AllowUnsafeBlocks>True</AllowUnsafeBlocks>\",\n                    csprojFileContents\n                );\n            }\n\n            [TestCase(new object[] { \"C:/Analyzer.dll\" })]\n            [TestCase(new object[] { \"C:/Analyzer.dll\", \"C:/Analyzer2.dll\" })]\n            [TestCase(new object[] { \"../Analyzer.dll\" })]\n            [TestCase(new object[] { \"../Analyzer.dll\", \"C:/Analyzer2.dll\" })]\n            public void AddAnalyzers(params string[] paths)\n            {\n                var combined = string.Join(\";\", paths);\n                const string additionalFileTemplate = @\"    <Analyzer Include=\"\"{0}\"\" />\";\n                var expectedOutput = paths\n                    .Select(\n                        x =>\n                            string.Format(\n                                additionalFileTemplate,\n                                MakeAbsolutePath(x).NormalizePath()\n                            )\n                    )\n                    .ToArray();\n\n                CheckOtherArgument(new[] { $\"-a:{combined}\" }, expectedOutput);\n                CheckOtherArgument(new[] { $\"-analyzer:{combined}\" }, expectedOutput);\n                CheckOtherArgument(new[] { $\"/a:{combined}\" }, expectedOutput);\n                CheckOtherArgument(new[] { $\"/analyzer:{combined}\" }, expectedOutput);\n            }\n\n            [Test]\n            public void CheckDefaultWarningLevel()\n            {\n                CheckOtherArgument(Array.Empty<string>(), \"<WarningLevel>4</WarningLevel>\");\n            }\n\n            [Test]\n            public void CheckLangVersion()\n            {\n                CheckOtherArgument(new[] { \"-langversion:7.2\" }, \"<LangVersion>7.2</LangVersion>\");\n            }\n\n            [Test]\n            public void CheckDefaultLangVersion()\n            {\n                CheckOtherArgument(\n                    Array.Empty<string>(),\n                    $\"<LangVersion>{Helper.GetLangVersion()}</LangVersion>\"\n                );\n            }\n\n            public void CheckOtherArgument(\n                string[] argumentString,\n                params string[] expectedContents\n            )\n            {\n                const string responseFile = \"csc.rsp\";\n                var synchronizer = m_Builder\n                    .WithResponseFileData(\n                        m_Builder.Assembly,\n                        responseFile,\n                        otherArguments: argumentString\n                    )\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                foreach (string expectedContent in expectedContents)\n                {\n                    StringAssert.Contains(\n                        expectedContent,\n                        csprojFileContents,\n                        $\"Arguments: {string.Join(\";\", argumentString)} {Environment.NewLine}\"\n                            + Environment.NewLine\n                            + $\"Expected: {expectedContent.Replace(\"\\r\", \"\\\\r\").Replace(\"\\n\", \"\\\\n\")}\"\n                            + Environment.NewLine\n                            + $\"Actual: {csprojFileContents.Replace(\"\\r\", \"\\\\r\").Replace(\"\\n\", \"\\\\n\")}\"\n                    );\n                }\n            }\n\n            [Test]\n            public void AllowUnsafeFromAssemblySettings_AddBlockToCsproj()\n            {\n                var synchronizer = m_Builder.WithAssemblyData(unsafeSettings: true).Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.Contains(\n                    \"<AllowUnsafeBlocks>True</AllowUnsafeBlocks>\",\n                    csprojFileContents\n                );\n            }\n        }\n\n        class References : ProjectGenerationTestBase\n        {\n            [Test]\n            public void RoslynAnalyzerDlls_WillBeIncluded()\n            {\n                var roslynAnalyzerDllPath = \"Assets/RoslynAnalyzer.dll\";\n                var synchronizer = m_Builder\n                    .WithRoslynAnalyzers(new[] { roslynAnalyzerDllPath })\n                    .Build();\n\n                synchronizer.Sync();\n\n                string projectFile = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                XmlDocument projectFileXml = XMLUtilities.FromText(projectFile);\n                XMLUtilities.AssertAnalyzerItemsMatchExactly(\n                    projectFileXml,\n                    new[] { MakeAbsolutePath(roslynAnalyzerDllPath).NormalizePath() }\n                );\n            }\n\n            [Test]\n            public void RoslynAnalyzerRulesetFiles_WillBeIncluded()\n            {\n                var roslynAnalyzerRuleSetPath = \"Assets/RoslynRuleSet.ruleset\";\n\n                m_Builder\n                    .WithAssemblyData(files: new[] { \"file.cs\" })\n                    .WithRoslynAnalyzerRulesetPath(roslynAnalyzerRuleSetPath)\n                    .Build()\n                    .Sync();\n                var csProjectFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                XmlDocument csProjectXmlFile = XMLUtilities.FromText(csProjectFileContents);\n                XMLUtilities.AssertAnalyzerRuleSetsMatchExactly(\n                    csProjectXmlFile,\n                    MakeAbsolutePath(roslynAnalyzerRuleSetPath).NormalizePath()\n                );\n            }\n\n            [Test]\n            public void Containing_PathWithSpaces_IsParsedCorrectly()\n            {\n                const string responseFile = \"csc.rsp\";\n                var synchronizer = m_Builder\n                    .WithResponseFileData(\n                        m_Builder.Assembly,\n                        responseFile,\n                        fullPathReferences: new[] { \"Folder/Path With Space/Goodbye.dll\" }\n                    )\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $\"<Reference Include=\\\"Goodbye\\\">\\\\W*<HintPath>{Regex.Escape(MakeAbsolutePathTestImplementation(\"Folder/Path With Space/Goodbye.dll\").NormalizePath())}\\\\W*</HintPath>\\\\W*</Reference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void Containing_PathWithDotCS_IsParsedCorrectly()\n            {\n                var assembly = new Assembly(\n                    \"name\",\n                    \"/path/with.cs/assembly.dll\",\n                    new[] { \"file.cs\" },\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var synchronizer = m_Builder\n                    .WithAssemblyData(assemblyReferences: new[] { assembly })\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $@\"<ProjectReference Include=\"\"{assembly.name}\\.csproj\"\">[\\S\\s]*?</ProjectReference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void Multiple_AreAdded()\n            {\n                const string responseFile = \"csc.rsp\";\n                var synchronizer = m_Builder\n                    .WithResponseFileData(\n                        m_Builder.Assembly,\n                        responseFile,\n                        fullPathReferences: new[] { \"MyPlugin.dll\", \"Hello.dll\" }\n                    )\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $@\"<Reference Include=\"\"Hello\"\">\\W*<HintPath>{Regex.Escape(MakeAbsolutePathTestImplementation(\"Hello.dll\").NormalizePath())}</HintPath>\\W*</Reference>\"\n                    )\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $@\"<Reference Include=\"\"MyPlugin\"\">\\W*<HintPath>{Regex.Escape(MakeAbsolutePathTestImplementation(\"MyPlugin.dll\").NormalizePath())}</HintPath>\\W*</Reference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void AssemblyReference_IsAdded()\n            {\n                string[] files = { \"test.cs\" };\n                var assemblyReferences = new[]\n                {\n                    new Assembly(\n                        \"MyPlugin\",\n                        \"/some/path/MyPlugin.dll\",\n                        files,\n                        new string[0],\n                        new Assembly[0],\n                        new string[0],\n                        AssemblyFlags.None\n                    ),\n                    new Assembly(\n                        \"Hello\",\n                        \"/some/path/Hello.dll\",\n                        files,\n                        new string[0],\n                        new Assembly[0],\n                        new string[0],\n                        AssemblyFlags.None\n                    ),\n                };\n                var synchronizer = m_Builder\n                    .WithAssemblyData(assemblyReferences: assemblyReferences)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $@\"<ProjectReference Include=\"\"{assemblyReferences[0].name}\\.csproj\"\">[\\S\\s]*?</ProjectReference>\"\n                    )\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $@\"<ProjectReference Include=\"\"{assemblyReferences[1].name}\\.csproj\"\">[\\S\\s]*?</ProjectReference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void AssemblyReferenceFromInternalizedPackage_IsAddedAsReference()\n            {\n                string[] files = { \"test.cs\" };\n                var assemblyReferences = new[]\n                {\n                    new Assembly(\n                        \"MyPlugin\",\n                        \"/some/path/MyPlugin.dll\".NormalizePath(),\n                        files,\n                        new string[0],\n                        new Assembly[0],\n                        new string[0],\n                        AssemblyFlags.None\n                    ),\n                    new Assembly(\n                        \"Hello\",\n                        \"/some/path/Hello.dll\".NormalizePath(),\n                        files,\n                        new string[0],\n                        new Assembly[0],\n                        new string[0],\n                        AssemblyFlags.None\n                    ),\n                };\n                var synchronizer = m_Builder\n                    .WithPackageAsset(files[0], true)\n                    .WithAssemblyData(assemblyReferences: assemblyReferences)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Not.Match(\n                        $@\"<ProjectReference Include=\"\"{assemblyReferences[0].name}\\.csproj\"\">[\\S\\s]*?</ProjectReference>\"\n                    )\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Not.Match(\n                        $@\"<ProjectReference Include=\"\"{assemblyReferences[1].name}\\.csproj\"\">[\\S\\s]*?</ProjectReference>\"\n                    )\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $\"<Reference Include=\\\"{assemblyReferences[0].name}\\\">\\\\W*<HintPath>{Regex.Escape(assemblyReferences[0].outputPath)}</HintPath>\\\\W*</Reference>\"\n                    )\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $\"<Reference Include=\\\"{assemblyReferences[1].name}\\\">\\\\W*<HintPath>{Regex.Escape(assemblyReferences[1].outputPath)}</HintPath>\\\\W*</Reference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void CompiledAssemblyReference_IsAdded()\n            {\n                var compiledAssemblyReferences = new[]\n                {\n                    \"/some/path/MyPlugin.dll\".NormalizePath(),\n                    \"/some/other/path/Hello.dll\".NormalizePath(),\n                };\n                var synchronizer = m_Builder\n                    .WithAssemblyData(compiledAssemblyReferences: compiledAssemblyReferences)\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $\"<Reference Include=\\\"Hello\\\">\\\\W*<HintPath>{Regex.Escape(compiledAssemblyReferences[1])}</HintPath>\\\\W*</Reference>\"\n                    )\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\n                        $\"<Reference Include=\\\"MyPlugin\\\">\\\\W*<HintPath>{Regex.Escape(compiledAssemblyReferences[0])}</HintPath>\\\\W*</Reference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void ProjectReference_FromLibraryReferences_IsAdded()\n            {\n                var projectAssembly = new Assembly(\n                    \"ProjectAssembly\",\n                    \"/path/to/project.dll\",\n                    new[] { \"test.cs\" },\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var synchronizer = m_Builder\n                    .WithAssemblyData(assemblyReferences: new[] { projectAssembly })\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Not.Match(\n                        $\"<Reference Include=\\\"{projectAssembly.name}\\\">\\\\W*<HintPath>{projectAssembly.outputPath}</HintPath>\\\\W*</Reference>\"\n                    )\n                );\n            }\n\n            [Test]\n            public void NotInAssembly_WontBeAdded()\n            {\n                var fileOutsideAssembly = \"some.dll\";\n                var fileArray = new[] { fileOutsideAssembly };\n                var synchronizer = m_Builder.WithAssetFiles(fileArray).Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.DoesNotContain(\"some.dll\", csprojFileContents);\n            }\n        }\n\n        class Defines : ProjectGenerationTestBase\n        {\n            [Test]\n            public void ResponseFiles_CanAddDefines()\n            {\n                const string responseFile = \"csc.rsp\";\n                var synchronizer = m_Builder\n                    .WithResponseFileData(\n                        m_Builder.Assembly,\n                        responseFile,\n                        defines: new[] { \"DEF1\", \"DEF2\" }\n                    )\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\"<DefineConstants>.*;DEF1.*</DefineConstants>\")\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\"<DefineConstants>.*;DEF2.*</DefineConstants>\")\n                );\n            }\n\n            [Test]\n            public void Assembly_CanAddDefines()\n            {\n                var synchronizer = m_Builder\n                    .WithAssemblyData(defines: new[] { \"DEF1\", \"DEF2\" })\n                    .Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\"<DefineConstants>.*;DEF1.*</DefineConstants>\")\n                );\n                Assert.That(\n                    csprojFileContents,\n                    Does.Match(\"<DefineConstants>.*;DEF2.*</DefineConstants>\")\n                );\n            }\n\n            [Test]\n            public void ResponseFileDefines_OverrideRootResponseFile()\n            {\n                string[] files = { \"test.cs\" };\n                var assemblyA = new Assembly(\n                    \"A\",\n                    \"some/root/file.dll\",\n                    files,\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var assemblyB = new Assembly(\n                    \"B\",\n                    \"some/root/child/anotherfile.dll\",\n                    files,\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var synchronizer = m_Builder\n                    .WithAssemblies(new[] { assemblyA, assemblyB })\n                    .WithResponseFileData(assemblyA, \"A.rsp\", defines: new[] { \"RootedDefine\" })\n                    .WithResponseFileData(assemblyB, \"B.rsp\", defines: new[] { \"CHILD_DEFINE\" })\n                    .Build();\n\n                synchronizer.Sync();\n\n                var aCsprojContent = m_Builder.ReadProjectFile(assemblyA);\n                var bCsprojContent = m_Builder.ReadProjectFile(assemblyB);\n                Assert.That(\n                    bCsprojContent,\n                    Does.Match(\"<DefineConstants>.*;CHILD_DEFINE.*</DefineConstants>\")\n                );\n                Assert.That(\n                    bCsprojContent,\n                    Does.Not.Match(\"<DefineConstants>.*;RootedDefine.*</DefineConstants>\")\n                );\n                Assert.That(\n                    aCsprojContent,\n                    Does.Not.Match(\"<DefineConstants>.*;CHILD_DEFINE.*</DefineConstants>\")\n                );\n                Assert.That(\n                    aCsprojContent,\n                    Does.Match(\"<DefineConstants>.*;RootedDefine.*</DefineConstants>\")\n                );\n            }\n        }\n\n        class OnGenerationProject : ProjectGenerationTestBase\n        {\n            static bool m_HasCalledOnGeneratedCSProject = false;\n\n            static bool m_isRunningThisTest = false;\n\n            public class OnGenerationCallbacks : AssetPostprocessor\n            {\n                public static string OnGeneratedCSProject(string path, string content)\n                {\n                    if (!m_isRunningThisTest)\n                        return content;\n\n                    m_HasCalledOnGeneratedCSProject = true;\n                    return content.Replace(\"fileA\", \"fileD\");\n                }\n            }\n\n            [Test]\n            public void OnGenerationProject_Called()\n            {\n                m_isRunningThisTest = true;\n\n                var synchronizer = m_Builder.Build();\n                synchronizer.Sync();\n\n                Assert.True(m_HasCalledOnGeneratedCSProject);\n\n                m_isRunningThisTest = false;\n            }\n\n            [Test]\n            public void OnGenerationProject_Modifed()\n            {\n                m_isRunningThisTest = true;\n\n                var files = new[] { \"fileA.cs\", \"fileB.cs\", \"fileC.cs\" };\n                var synchronizer = m_Builder.WithAssemblyData(files: files).Build();\n\n                synchronizer.Sync();\n\n                var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly);\n                StringAssert.DoesNotContain(\"fileA.cs\", csprojFileContents);\n                StringAssert.Contains(\"fileD.cs\", csprojFileContents);\n                Assert.True(m_HasCalledOnGeneratedCSProject);\n\n                m_isRunningThisTest = false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/CSProjectTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e758ab1362dab204aa5aaac5590165b0\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/DetermineScriptEditor.cs",
    "content": "using NUnit.Framework;\nusing Moq;\nusing UnityEngine;\nusing UnityEngine.TestTools;\nusing Unity.CodeEditor;\n\nnamespace VSCodeEditor.Tests\n{\n    [TestFixture]\n    class DetermineScriptEditor\n    {\n        [TestCase(\"/Applications/Visual Studio Code.app\")]\n        [TestCase(\"/Applications/Visual Studio Code - Insiders.app\")]\n        [TestCase(\"/Applications/VS Code.app\")]\n        [TestCase(\"/Applications/Code.app\")]\n        [TestCase(\"/home/thatguy/vscode/code\")]\n        [UnityPlatform(RuntimePlatform.OSXEditor)]\n        public void OSXPathDiscovery(string path)\n        {\n            Discover(path);\n        }\n\n        [TestCase(@\"C:\\Program Files\\Microsoft VS Code\\bin\\code.cmd\")]\n        [TestCase(@\"C:\\Program Files\\Microsoft VS Code\\Code.exe\")]\n        [TestCase(@\"C:\\Program Files\\Microsoft VS Code Insiders\\bin\\code-insiders.cmd\")]\n        [TestCase(@\"C:\\Program Files\\Microsoft VS Code Insiders\\Code.exe\")]\n        [TestCase(@\"C:\\Users\\Username\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd\")]\n        [TestCase(@\"C:\\Users\\Username\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\")]\n        [TestCase(\n            @\"C:\\Users\\Username\\AppData\\Local\\Programs\\Microsoft VS Code Insiders\\bin\\code-insiders.cmd\"\n        )]\n        [TestCase(@\"C:\\Users\\Username\\AppData\\Local\\Programs\\Microsoft VS Code Insiders\\Code.exe\")]\n        [UnityPlatform(RuntimePlatform.WindowsEditor)]\n        public void WindowsPathDiscovery(string path)\n        {\n            Discover(path);\n        }\n\n        [TestCase(\"/usr/bin/code\")]\n        [TestCase(\"/bin/code\")]\n        [TestCase(\"/usr/local/bin/code\")]\n        [TestCase(\"/var/lib/flatpak/exports/bin/com.visualstudio.code\")]\n        [TestCase(\"/snap/current/bin/code\")]\n        [UnityPlatform(RuntimePlatform.LinuxEditor)]\n        public void LinuxPathDiscovery(string path)\n        {\n            Discover(path);\n        }\n\n        static void Discover(string path)\n        {\n            var discovery = new Mock<IDiscovery>();\n            var generator = new Mock<IGenerator>();\n\n            discovery\n                .Setup(x => x.PathCallback())\n                .Returns(\n                    new[]\n                    {\n                        new CodeEditor.Installation\n                        {\n                            Path = path,\n                            Name = path.Contains(\"Insiders\")\n                                ? \"Visual Studio Code Insiders\"\n                                : \"Visual Studio Code\"\n                        }\n                    }\n                );\n\n            var editor = new VSCodeScriptEditor(discovery.Object, generator.Object);\n\n            editor.TryGetInstallationForPath(path, out var installation);\n\n            Assert.AreEqual(path, installation.Path);\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/DetermineScriptEditor.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1088a88b936509a4f8554d4b38f3d0f8\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/Helper.cs",
    "content": "using UnityEditor.Compilation;\n\nnamespace VSCodeEditor.Tests\n{\n    public static class Helper\n    {\n        public static string GetLangVersion()\n        {\n            var languageVersion = new ScriptCompilerOptions().LanguageVersion;\n            return languageVersion;\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/Helper.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 44504e25e86f4e2eab3f97a61d5c3e37\ntimeCreated: 1643815839"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/MockFileIO.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing NUnit.Framework;\n\nnamespace VSCodeEditor.Tests\n{\n    class MockFileIO : IFileIO\n    {\n        readonly Dictionary<string, string> fileToContent = new();\n        public int WriteTimes { get; private set; }\n        public int ReadTimes { get; private set; }\n        public int ExistTimes { get; private set; }\n\n        public bool Exists(string fileName)\n        {\n            ++ExistTimes;\n            return fileToContent.ContainsKey(fileName);\n        }\n\n        public string ReadAllText(string fileName)\n        {\n            ++ReadTimes;\n            return fileToContent[fileName];\n        }\n\n        public void WriteAllText(string fileName, string content)\n        {\n            ++WriteTimes;\n            var utf8 = Encoding.UTF8;\n            byte[] utfBytes = utf8.GetBytes(content);\n            fileToContent[fileName] = utf8.GetString(utfBytes, 0, utfBytes.Length);\n        }\n\n        public string EscapedRelativePathFor(string file, string projectDirectory)\n        {\n            return file.NormalizePath()\n                .StartsWith(\n                    $\"{projectDirectory}{Path.DirectorySeparatorChar}\",\n                    StringComparison.Ordinal\n                )\n                ? file[(projectDirectory.Length + 1)..]\n                : file.NormalizePath();\n        }\n\n        public void DeleteFile(string fileName)\n        {\n            if (!fileToContent.ContainsKey(fileName))\n            {\n                throw new Exception($\"{fileName}: has not been created.\");\n            }\n\n            fileToContent.Remove(fileName);\n        }\n\n        public void CreateDirectory(string pathName)\n        {\n            if (fileToContent.ContainsKey(pathName))\n            {\n                throw new Exception($\"{pathName}: already exists.\");\n            }\n\n            fileToContent[pathName] = \"\";\n        }\n\n        public void Copy(string sourceFileName, string destFileName, bool overwrite)\n        {\n            if (!fileToContent.ContainsKey(sourceFileName))\n            {\n                throw new Exception($\"{sourceFileName}: has not been created.\");\n            }\n\n            if (fileToContent.ContainsKey(destFileName) && !overwrite)\n            {\n                throw new Exception($\"{destFileName}: already exists.\");\n            }\n\n            fileToContent[destFileName] = fileToContent[sourceFileName];\n        }\n    }\n\n    public class MockFileIOTests\n    {\n        MockFileIO m_FileIo;\n\n        [SetUp]\n        public void SetUp()\n        {\n            m_FileIo = new MockFileIO();\n        }\n\n        [Test]\n        public void WhenWrite_Exists()\n        {\n            var fileName = \"fileName\";\n            m_FileIo.WriteAllText(fileName, \"\");\n            Assert.True(m_FileIo.Exists(fileName));\n        }\n\n        [Test]\n        public void BeforeWrite_DoesNotExist()\n        {\n            var fileName = \"fileName\";\n            Assert.False(m_FileIo.Exists(fileName));\n        }\n\n        [Test]\n        public void WhenWrite_CanRead()\n        {\n            var fileName = \"fileName\";\n            var content = \"content\";\n            m_FileIo.WriteAllText(fileName, content);\n            Assert.AreEqual(content, m_FileIo.ReadAllText(fileName));\n        }\n\n        [Test]\n        public void WriteTwice_WillOverwriteContent()\n        {\n            var fileName = \"fileName\";\n            var content = \"content\";\n            var content2 = \"content2\";\n            m_FileIo.WriteAllText(fileName, content);\n            m_FileIo.WriteAllText(fileName, content2);\n            Assert.AreEqual(content2, m_FileIo.ReadAllText(fileName));\n        }\n\n        [Test]\n        public void WhenWrite_ThenDelete_FillDoesNotExist()\n        {\n            var fileName = \"fileName\";\n            var content = \"content\";\n            m_FileIo.WriteAllText(fileName, content);\n            m_FileIo.DeleteFile(fileName);\n\n            Assert.IsFalse(m_FileIo.Exists(fileName), \"File Should not exist are deleting it\");\n        }\n\n        [Test]\n        public void BeforeWrite_IfDelete_ExceptionOccurs()\n        {\n            var fileName = \"fileName\";\n\n            var exception = Assert.Throws<Exception>(() => m_FileIo.DeleteFile(fileName));\n\n            StringAssert.AreEqualIgnoringCase(\n                $\"{fileName}: has not been created.\",\n                exception.Message\n            );\n        }\n\n        [Test]\n        public void BeforeWrite_Read_CausesFailure()\n        {\n            var fileName = \"fileName\";\n            Assert.Throws<KeyNotFoundException>(() => m_FileIo.ReadAllText(fileName));\n        }\n\n        [Test]\n        public void CallingExist_IncreaseCounter()\n        {\n            m_FileIo.Exists(\"fileName\");\n            Assert.AreEqual(1, m_FileIo.ExistTimes);\n            m_FileIo.Exists(\"fileName2\");\n            Assert.AreEqual(2, m_FileIo.ExistTimes);\n        }\n\n        [Test]\n        public void CallingWrite_IncreaseCounter()\n        {\n            var fileName = \"fileName\";\n            m_FileIo.WriteAllText(fileName, \"\");\n            Assert.AreEqual(1, m_FileIo.WriteTimes);\n            m_FileIo.WriteAllText(fileName, \"\");\n            Assert.AreEqual(2, m_FileIo.WriteTimes);\n        }\n\n        [Test]\n        public void CallingRead_IncreaseCounter()\n        {\n            var fileName = \"fileName\";\n            m_FileIo.WriteAllText(fileName, \"\");\n            m_FileIo.ReadAllText(fileName);\n            Assert.AreEqual(1, m_FileIo.ReadTimes);\n            m_FileIo.ReadAllText(fileName);\n            Assert.AreEqual(2, m_FileIo.ReadTimes);\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/MockFileIO.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 190eb9b1e04f04a4c8406abe88ae4424\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/SolutionGenerationTestBase.cs",
    "content": "using System.IO;\nusing NUnit.Framework;\nusing Unity.CodeEditor;\n\nnamespace VSCodeEditor.Tests\n{\n    class ProjectGenerationTestBase\n    {\n        string m_EditorPath;\n        protected SynchronizerBuilder m_Builder;\n\n        [OneTimeSetUp]\n        public void OneTimeSetUp()\n        {\n            m_EditorPath = CodeEditor.CurrentEditorInstallation;\n            CodeEditor.SetExternalScriptEditor(\"NotSet\");\n        }\n\n        [OneTimeTearDown]\n        public void OneTimeTearDown()\n        {\n            CodeEditor.SetExternalScriptEditor(m_EditorPath);\n        }\n\n        [SetUp]\n        public void SetUp()\n        {\n            m_Builder = new SynchronizerBuilder();\n        }\n\n        protected static string MakeAbsolutePathTestImplementation(string path)\n        {\n            return Path.IsPathRooted(path)\n                ? path\n                : Path.Combine(SynchronizerBuilder.projectDirectory, path);\n        }\n\n        protected static string MakeAbsolutePath(string path)\n        {\n            return Path.IsPathRooted(path) ? path : Path.GetFullPath(path);\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/SolutionGenerationTestBase.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 709bf2641c061d34685b039b179ac9c7\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/SolutionTests.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing NUnit.Framework;\nusing UnityEditor.Compilation;\nusing UnityEditor;\n\nnamespace VSCodeEditor.Tests\n{\n    namespace SolutionGeneration\n    {\n        class Synchronization : ProjectGenerationTestBase\n        {\n            [Test]\n            public void EmptyProject_WhenSynced_ShouldNotGenerateSolutionFile()\n            {\n                var synchronizer = m_Builder.WithAssemblies(new Assembly[0]).Build();\n\n                synchronizer.Sync();\n\n                Assert.False(\n                    m_Builder\n                        .ReadFile(synchronizer.SolutionFile())\n                        .Contains(\"Project(\\\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\\\")\"),\n                    \"Should not create project entry with no assemblies.\"\n                );\n            }\n\n            [Test]\n            public void NoSolution_WhenSynced_CreatesSolutionFile()\n            {\n                var synchronizer = m_Builder.Build();\n\n                Assert.False(\n                    synchronizer.SolutionExists(),\n                    \"Should not create solution file before we call sync.\"\n                );\n\n                synchronizer.Sync();\n\n                Assert.True(synchronizer.SolutionExists(), \"Should create solution file.\");\n            }\n\n            [Test]\n            public void WhenSynced_ThenDeleted_SolutionFileDoesNotExist()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n                m_Builder.DeleteFile(synchronizer.SolutionFile());\n\n                Assert.False(\n                    synchronizer.SolutionExists(),\n                    \"Synchronizer should sync state with file system, after file has been deleted.\"\n                );\n            }\n\n            [Test]\n            public void ContentWithoutChanges_WhenSynced_DoesNotReSync()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"Once for csproj, once for solution, once for workspace, and once for vscode settings\"\n                );\n\n                synchronizer.Sync();\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"When content doesn't change we shouldn't re-sync\"\n                );\n            }\n\n            [Test]\n            public void AssemblyChanged_AfterSync_PerformsReSync()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"Once for csproj, once for solution, once for workspace file, and once vscode settings\"\n                );\n\n                m_Builder.WithAssemblies(\n                    new[]\n                    {\n                        new Assembly(\n                            \"Another\",\n                            \"path/to/Assembly.dll\",\n                            new[] { \"file.cs\" },\n                            new string[0],\n                            new Assembly[0],\n                            new string[0],\n                            AssemblyFlags.None\n                        )\n                    }\n                );\n\n                synchronizer.Sync();\n                Assert.AreEqual(\n                    6,\n                    m_Builder.WriteTimes,\n                    \"Should re-sync the solution file and the csproj\"\n                );\n            }\n\n            [Test]\n            public void EmptySolutionFile_WhenSynced_OverwritesTheFile()\n            {\n                var synchronizer = m_Builder.Build();\n\n                // Pre-seed solution file with empty property section\n                var solutionText =\n                    \"Microsoft Visual Studio Solution File, Format Version 11.00\\n# Visual Studio 2010\\nGlobal\\nEndGlobal\";\n                m_Builder.WithSolutionText(solutionText);\n\n                synchronizer.Sync();\n\n                Assert.AreNotEqual(\n                    solutionText,\n                    m_Builder.ReadFile(synchronizer.SolutionFile()),\n                    \"Should rewrite solution text\"\n                );\n            }\n\n            [TestCase(\"dll\")]\n            [TestCase(\"asmdef\")]\n            public void AfterSync_WillResync_WhenReimportWithSpecialFileExtensions(\n                string reimportedFile\n            )\n            {\n                var synchronizer = m_Builder.Build();\n\n                Assert.That(\n                    synchronizer.SyncIfNeeded(\n                        new List<string>(),\n                        new[] { $\"reimport.{reimportedFile}\" }\n                    )\n                );\n            }\n\n            [Test]\n            public void AfterSync_WontResync_WhenReimportWithoutSpecialFileExtensions()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n\n                Assert.IsFalse(\n                    synchronizer.SyncIfNeeded(new List<string>(), new[] { \"ShouldNotSync.txt\" })\n                );\n            }\n\n            [Test]\n            public void AfterSync_WontReimport_WithoutSpecificAffectedFileExtension()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n\n                Assert.IsFalse(\n                    synchronizer.SyncIfNeeded(\n                        new List<string> { \" reimport.random\" },\n                        new string[0]\n                    )\n                );\n            }\n\n            [Test]\n            public void AfterSync_WillReimportSolutionFile_WhenNewAssemblyIsBeingAdded()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n\n                var newAssembly = new Assembly(\n                    \"MyAssembly\",\n                    \"myOutput/path\",\n                    new[] { \"MyFile.cs\" },\n                    new string[0],\n                    new Assembly[0],\n                    new string[0],\n                    AssemblyFlags.None\n                );\n                var newAssemblies = new[] { m_Builder.Assembly, newAssembly };\n                m_Builder.WithAssemblies(newAssemblies);\n                m_Builder.AssignFilesToAssembly(new[] { \"MyFile.cs\" }, newAssembly);\n\n                synchronizer.SyncIfNeeded(new List<string> { \"MyFile.cs\" }, new string[0]);\n\n                var solutionFileContent = m_Builder.ReadFile(synchronizer.SolutionFile());\n                StringAssert.Contains(\n                    \"Project(\\\"{}\\\") = \\\"MyAssembly\\\", \\\"MyAssembly.csproj\\\"\",\n                    solutionFileContent,\n                    \"After synchronizing a new file from a new Assembly. The new assembly should be added to solution file.\"\n                );\n            }\n\n            [Test]\n            public void AssetNotBelongingToAssembly_WillSync_ButWontWriteFiles()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync(); // Generate solution and csproj\n\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"Should have written csproj, sln, workspace, and vscode setting files\"\n                );\n\n                m_Builder.WithAssetFiles(new[] { \"X.cs\" });\n\n                var res = synchronizer.SyncIfNeeded(new List<string> { \"X.cs\" }, new string[0]);\n\n                Assert.IsTrue(res, \"Should support file extension\");\n\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"Should not have rewritten neither csproj, sln, workspace, nor vscode setting files\"\n                );\n            }\n\n            [Test]\n            public void AssetBelongingToAssemblyWithNoName_WillSync_ButWontWriteFiles()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync(); // Generate solution and csproj\n\n                Assert.AreEqual(\n                    4,\n                    m_Builder.WriteTimes,\n                    \"Should have written csproj, sln, workspace, and vscode setting files\"\n                );\n\n                string[] files = { \"X.cs\" };\n                m_Builder\n                    .WithAssetFiles(files)\n                    .AssignFilesToAssembly(\n                        files,\n                        new Assembly(\n                            \"\",\n                            \"\",\n                            files,\n                            new string[0],\n                            new Assembly[0],\n                            new string[0],\n                            AssemblyFlags.EditorAssembly\n                        )\n                    );\n\n                var res = synchronizer.SyncIfNeeded(new List<string> { \"X.cs\" }, new string[0]);\n\n                Assert.IsTrue(res, \"Should support file extension\");\n\n                Assert.AreEqual(4, m_Builder.WriteTimes, \"Should only rewrite sln file\");\n            }\n\n            [Test, TestCaseSource(nameof(s_ExtensionsRequireReSync))]\n            public void WillResync_WhenAffectedFileTypes(string fileExtension)\n            {\n                var synchronizer = m_Builder.Build();\n\n                Assert.That(\n                    synchronizer.SyncIfNeeded(\n                        new List<string> { $\"reimport.{fileExtension}\" },\n                        new string[0]\n                    )\n                );\n            }\n\n            static readonly string[] s_ExtensionsRequireReSync =\n            {\n                \"dll\",\n                \"asmdef\",\n                \"cs\",\n                \"uxml\",\n                \"uss\",\n                \"shader\",\n                \"compute\",\n                \"cginc\",\n                \"hlsl\",\n                \"glslinc\",\n                \"template\",\n                \"raytrace\"\n            };\n        }\n\n        class Format : ProjectGenerationTestBase\n        {\n            [Test]\n            public void SyncSettings_WhenSynced_HeaderMatchesVSVersion()\n            {\n                var synchronizer = m_Builder.Build();\n\n                synchronizer.Sync();\n\n                string[] syncedSolutionText = m_Builder\n                    .ReadFile(synchronizer.SolutionFile())\n                    .Split(new[] { \"\\r\\n\" }, StringSplitOptions.None);\n                Assert.That(syncedSolutionText.Length, Is.GreaterThanOrEqualTo(4));\n                Assert.AreEqual(\"\", syncedSolutionText[0]);\n                Assert.AreEqual(\n                    \"Microsoft Visual Studio Solution File, Format Version 11.00\",\n                    syncedSolutionText[1]\n                );\n                Assert.AreEqual(\"# Visual Studio 2010\", syncedSolutionText[2]);\n            }\n\n            [Test]\n            public void DefaultSyncSettings_WhenSynced_CreatesSolutionFileFromDefaultTemplate()\n            {\n                var solutionGUID = \"SolutionGUID\";\n                var projectGUID = \"ProjectGUID\";\n                var synchronizer = m_Builder\n                    .WithSolutionGuid(solutionGUID)\n                    .WithProjectGuid(projectGUID, m_Builder.Assembly)\n                    .Build();\n\n                // solutionguid, solutionname, projectguid\n                var solutionExpected = string.Join(\n                        \"\\r\\n\",\n                        new[]\n                        {\n                            @\"\",\n                            @\"Microsoft Visual Studio Solution File, Format Version 11.00\",\n                            @\"# Visual Studio 2010\",\n                            @\"Project(\"\"{{{0}}}\"\") = \"\"{2}\"\", \"\"{2}.csproj\"\", \"\"{{{1}}}\"\"\",\n                            @\"EndProject\",\n                            @\"Global\",\n                            @\"    GlobalSection(SolutionConfigurationPlatforms) = preSolution\",\n                            @\"        Debug|Any CPU = Debug|Any CPU\",\n                            @\"    EndGlobalSection\",\n                            @\"    GlobalSection(ProjectConfigurationPlatforms) = postSolution\",\n                            @\"        {{{1}}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\",\n                            @\"        {{{1}}}.Debug|Any CPU.Build.0 = Debug|Any CPU\",\n                            @\"    EndGlobalSection\",\n                            @\"    GlobalSection(SolutionProperties) = preSolution\",\n                            @\"        HideSolutionNode = FALSE\",\n                            @\"    EndGlobalSection\",\n                            @\"EndGlobal\",\n                            @\"\"\n                        }\n                    )\n                    .Replace(\"    \", \"\\t\");\n\n                var solutionTemplate = string.Format(\n                    solutionExpected,\n                    solutionGUID,\n                    projectGUID,\n                    m_Builder.Assembly.name\n                );\n\n                synchronizer.Sync();\n\n                Assert.AreEqual(solutionTemplate, m_Builder.ReadFile(synchronizer.SolutionFile()));\n            }\n        }\n\n        class OnGenerationSolution : ProjectGenerationTestBase\n        {\n            static bool m_HasCalledOnGeneratedSlnSolution = false;\n\n            const string solutionGUID = \"SolutionGUID\";\n            const string newSolutionGUID = \"1234567\";\n\n            // This is here because the fact this OnGenerationCallbacks is around\n            // will cause it to get executed.\n            static bool m_isRunningThisTest = false;\n\n            public class OnGenerationCallbacks : AssetPostprocessor\n            {\n                public static string OnGeneratedSlnSolution(string path, string content)\n                {\n                    if (!m_isRunningThisTest)\n                        return content;\n\n                    m_HasCalledOnGeneratedSlnSolution = true;\n                    return content.Replace(solutionGUID, newSolutionGUID);\n                }\n            }\n\n            [Test]\n            public void OnGenerationSolution_Called()\n            {\n                m_isRunningThisTest = true;\n\n                var synchronizer = m_Builder.Build();\n                synchronizer.Sync();\n\n                Assert.True(m_HasCalledOnGeneratedSlnSolution);\n\n                m_isRunningThisTest = false;\n            }\n\n            [Test]\n            public void OnGenerationSolution_Modifed()\n            {\n                m_isRunningThisTest = true;\n\n                var synchronizer = m_Builder.WithSolutionGuid(solutionGUID).Build();\n\n                synchronizer.Sync();\n\n                var slnFileContents = m_Builder.ReadFile(synchronizer.SolutionFile());\n                StringAssert.DoesNotContain(solutionGUID, slnFileContents);\n                StringAssert.Contains(newSolutionGUID, slnFileContents);\n                Assert.True(m_HasCalledOnGeneratedSlnSolution);\n\n                m_isRunningThisTest = false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/SolutionTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cf232692c0e8dc14580208c8dc307cd5\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/SynchronizerBuilder.cs",
    "content": "using System;\nusing System.IO;\nusing System.Linq;\nusing Moq;\nusing UnityEditor.Compilation;\n\nnamespace VSCodeEditor.Tests\n{\n    class SynchronizerBuilder\n    {\n        class BuilderError : Exception\n        {\n            public BuilderError(string message)\n                : base(message) { }\n        }\n\n        IGenerator m_Generator;\n        readonly Mock<IAssemblyNameProvider> m_AssemblyProvider = new();\n        public static readonly string projectDirectory = \"/FullPath/Example\".NormalizePath();\n        readonly MockFileIO m_FileIoMock = new();\n        readonly Mock<IGUIDGenerator> m_GUIDGenerator = new();\n\n        public string ReadFile(string fileName) => m_FileIoMock.ReadAllText(fileName);\n\n        public static string ProjectFilePath(Assembly assembly) =>\n            Path.Combine(projectDirectory, $\"{assembly.name}.csproj\");\n\n        public string ReadProjectFile(Assembly assembly) => ReadFile(ProjectFilePath(assembly));\n\n        public bool FileExists(string fileName) => m_FileIoMock.Exists(fileName);\n\n        public void DeleteFile(string fileName) => m_FileIoMock.DeleteFile(fileName);\n\n        public int WriteTimes => m_FileIoMock.WriteTimes;\n        public int ReadTimes => m_FileIoMock.ReadTimes;\n\n        public Assembly Assembly\n        {\n            get\n            {\n                if (m_Assemblies.Length > 0)\n                {\n                    return m_Assemblies[0];\n                }\n\n                throw new BuilderError(\n                    \"An empty list of assemblies has been populated, and then the first assembly was requested.\"\n                );\n            }\n        }\n\n        Assembly[] m_Assemblies;\n\n        public SynchronizerBuilder()\n        {\n            WithAssemblyData();\n        }\n\n        public IGenerator Build()\n        {\n            return m_Generator = new ProjectGeneration(\n                projectDirectory,\n                m_AssemblyProvider.Object,\n                m_FileIoMock,\n                m_GUIDGenerator.Object\n            );\n        }\n\n        public SynchronizerBuilder WithSolutionText(string solutionText)\n        {\n            if (m_Generator == null)\n            {\n                throw new BuilderError(\"You need to call Build() before calling this method.\");\n            }\n\n            m_FileIoMock.WriteAllText(m_Generator.SolutionFile(), solutionText);\n            return this;\n        }\n\n        public SynchronizerBuilder WithSolutionGuid(string solutionGuid)\n        {\n            m_GUIDGenerator\n                .Setup(x => x.SolutionGuid(Path.GetFileName(projectDirectory), \"cs\"))\n                .Returns(solutionGuid);\n            return this;\n        }\n\n        public SynchronizerBuilder WithProjectGuid(string projectGuid, Assembly assembly)\n        {\n            m_GUIDGenerator\n                .Setup(x => x.ProjectGuid(Path.GetFileName(projectDirectory), assembly.name))\n                .Returns(projectGuid);\n            return this;\n        }\n\n        public SynchronizerBuilder WithAssemblies(Assembly[] assemblies)\n        {\n            m_Assemblies = assemblies;\n            m_AssemblyProvider\n                .Setup(x => x.GetAssemblies(It.IsAny<Func<string, bool>>()))\n                .Returns(m_Assemblies);\n            return this;\n        }\n\n        public SynchronizerBuilder WithAssemblyData(\n            string[] files = null,\n            string[] defines = null,\n            Assembly[] assemblyReferences = null,\n            string[] compiledAssemblyReferences = null,\n            bool unsafeSettings = false\n        )\n        {\n            var assembly = new Assembly(\n                \"Test\",\n                \"some/path/file.dll\",\n                files ?? new[] { \"test.cs\" },\n                defines ?? new string[0],\n                assemblyReferences ?? new Assembly[0],\n                compiledAssemblyReferences ?? new string[0],\n                AssemblyFlags.None\n            );\n            assembly.compilerOptions.AllowUnsafeCode = unsafeSettings;\n            return WithAssembly(assembly);\n        }\n\n        public SynchronizerBuilder WithAssembly(Assembly assembly)\n        {\n            AssignFilesToAssembly(assembly.sourceFiles, assembly);\n            return WithAssemblies(new[] { assembly });\n        }\n\n        public SynchronizerBuilder WithAssetFiles(string[] files)\n        {\n            m_AssemblyProvider.Setup(x => x.GetAllAssetPaths()).Returns(files);\n            return this;\n        }\n\n        public SynchronizerBuilder AssignFilesToAssembly(string[] files, Assembly assembly)\n        {\n            m_AssemblyProvider\n                .Setup(\n                    x =>\n                        x.GetAssemblyNameFromScriptPath(It.Is<string>(file => files.Contains(file)))\n                )\n                .Returns(assembly.name);\n            return this;\n        }\n\n        public SynchronizerBuilder WithResponseFileData(\n            Assembly assembly,\n            string responseFile,\n            string[] defines = null,\n            string[] errors = null,\n            string[] fullPathReferences = null,\n            string[] otherArguments = null,\n            bool _unsafe = false\n        )\n        {\n            assembly.compilerOptions.ResponseFiles = new[] { responseFile };\n            m_AssemblyProvider\n                .Setup(\n                    x => x.ParseResponseFile(responseFile, projectDirectory, It.IsAny<string[]>())\n                )\n                .Returns(\n                    new ResponseFileData\n                    {\n                        Defines = defines ?? new string[0],\n                        Errors = errors ?? new string[0],\n                        FullPathReferences = fullPathReferences ?? new string[0],\n                        OtherArguments = otherArguments ?? new string[0],\n                        Unsafe = _unsafe,\n                    }\n                );\n            return this;\n        }\n\n        public SynchronizerBuilder WithPackageInfo(string assetPath)\n        {\n            m_AssemblyProvider\n                .Setup(x => x.FindForAssetPath(assetPath))\n                .Returns(default(UnityEditor.PackageManager.PackageInfo));\n            return this;\n        }\n\n        public SynchronizerBuilder WithPackageAsset(string assetPath, bool isInternalPackageAsset)\n        {\n            m_AssemblyProvider\n                .Setup(x => x.IsInternalizedPackagePath(assetPath))\n                .Returns(isInternalPackageAsset);\n            return this;\n        }\n\n        public SynchronizerBuilder WithUserSupportedExtensions(string[] extensions)\n        {\n            m_AssemblyProvider.Setup(x => x.ProjectSupportedExtensions).Returns(extensions);\n            return this;\n        }\n\n        public SynchronizerBuilder WithRoslynAnalyzerRulesetPath(string roslynAnalyzerRuleSetPath)\n        {\n            foreach (var assembly in m_Assemblies)\n            {\n                assembly.compilerOptions.RoslynAnalyzerRulesetPath = roslynAnalyzerRuleSetPath;\n            }\n            return this;\n        }\n\n        public SynchronizerBuilder WithRoslynAnalyzers(string[] roslynAnalyzerDllPaths)\n        {\n#if !ROSLYN_ANALYZER_FIX\n            m_AssemblyProvider\n                .Setup(x => x.GetRoslynAnalyzerPaths())\n                .Returns(roslynAnalyzerDllPaths);\n#else\n            foreach (var assembly in m_Assemblies)\n            {\n                assembly.compilerOptions.RoslynAnalyzerDllPaths = roslynAnalyzerDllPaths;\n            }\n#endif\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/SynchronizerBuilder.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c8fb16024c3395546a61eafae2e5fbab\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/Unity.com.unity.ide.vscode.EditorTests.asmdef",
    "content": "{\n    \"name\": \"Unity.VSCode.EditorTests\",\n    \"references\": [\n\t\t\"Unity.VSCode.Editor\"\n\t],\n    \"optionalUnityReferences\": [\n        \"TestAssemblies\"\n    ],\n    \"includePlatforms\": [\n        \"Editor\"\n    ],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": true,\n    \"precompiledReferences\": [\n        \"Moq.dll\"\n    ],\n    \"autoReferenced\": false,\n    \"defineConstraints\": [],\n    \"versionDefines\": [\n        {\n            \"name\": \"Unity\",\n            \"expression\": \"2021.2.0a9\",\n            \"define\": \"ROSLYN_ANALYZER_FIX\"\n        },\n        {\n            \"name\": \"Unity\",\n            \"expression\": \"[2021.1.2f1,2021.2.0a1]\",\n            \"define\": \"ROSLYN_ANALYZER_FIX\"\n        },\n        {\n            \"name\": \"Unity\",\n            \"expression\": \"[2020.3.6f1,2021.0]\",\n            \"define\": \"ROSLYN_ANALYZER_FIX\"\n        }\n    ]\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/Unity.com.unity.ide.vscode.EditorTests.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 3d83564bebbdd1842a81853fd1f798ef\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/VSCodeScriptEditorTests.cs",
    "content": "using Moq;\nusing NUnit.Framework;\nusing Unity.CodeEditor;\n\nnamespace VSCodeEditor.Tests\n{\n    [TestFixture]\n    public class VSCodeScriptEditorTests\n    {\n        IExternalCodeEditor editor;\n\n        [SetUp]\n        public void OneTimeSetUp()\n        {\n            var discovery = new Mock<IDiscovery>();\n            var generator = new Mock<IGenerator>();\n            editor = new VSCodeScriptEditor(discovery.Object, generator.Object);\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            CodeEditor.Unregister(editor);\n        }\n\n        [Test]\n        public void WillNotOpenUnknownExtensions()\n        {\n            Assert.False(editor.OpenProject(\"/file/with/unknown.extension\", 1, 1));\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/VSCodeScriptEditorTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 278731beeb85dae4182b762d3247b978\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/XMLUtilities.cs",
    "content": "using NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Xml;\n\nnamespace VSCodeEditor.Tests\n{\n    public static class XMLUtilities\n    {\n        public static void AssertCompileItemsMatchExactly(\n            XmlDocument projectXml,\n            IEnumerable<string> expectedCompileItems\n        )\n        {\n            var compileItems = projectXml\n                .SelectAttributeValues(\n                    \"/msb:Project/msb:ItemGroup/msb:Compile/@Include\",\n                    GetModifiedXmlNamespaceManager(projectXml)\n                )\n                .ToArray();\n            CollectionAssert.AreEquivalent(\n                RelativeAssetPathsFor(expectedCompileItems),\n                compileItems\n            );\n        }\n\n        public static void AssertAnalyzerItemsMatchExactly(\n            XmlDocument projectXml,\n            IEnumerable<string> expectedAnalyzers\n        )\n        {\n            CollectionAssert.AreEquivalent(\n                expected: RelativeAssetPathsFor(expectedAnalyzers),\n                actual: projectXml\n                    .SelectAttributeValues(\n                        \"/msb:Project/msb:ItemGroup/msb:Analyzer/@Include\",\n                        GetModifiedXmlNamespaceManager(projectXml)\n                    )\n                    .ToArray()\n            );\n        }\n\n        public static void AssertAnalyzerRuleSetsMatchExactly(\n            XmlDocument projectXml,\n            string expectedRuleSetFile\n        )\n        {\n            CollectionAssert.Contains(\n                projectXml\n                    .SelectInnerText(\n                        \"/msb:Project/msb:PropertyGroup/msb:CodeAnalysisRuleSet\",\n                        GetModifiedXmlNamespaceManager(projectXml)\n                    )\n                    .ToArray(),\n                expectedRuleSetFile\n            );\n        }\n\n        public static void AssertNonCompileItemsMatchExactly(\n            XmlDocument projectXml,\n            IEnumerable<string> expectedNoncompileItems\n        )\n        {\n            var nonCompileItems = projectXml\n                .SelectAttributeValues(\n                    \"/msb:Project/msb:ItemGroup/msb:None/@Include\",\n                    GetModifiedXmlNamespaceManager(projectXml)\n                )\n                .ToArray();\n            CollectionAssert.AreEquivalent(\n                RelativeAssetPathsFor(expectedNoncompileItems),\n                nonCompileItems\n            );\n        }\n\n        static XmlNamespaceManager GetModifiedXmlNamespaceManager(XmlDocument projectXml)\n        {\n            var xmlNamespaces = new XmlNamespaceManager(projectXml.NameTable);\n            xmlNamespaces.AddNamespace(\n                \"msb\",\n                \"http://schemas.microsoft.com/developer/msbuild/2003\"\n            );\n            return xmlNamespaces;\n        }\n\n        static IEnumerable<string> RelativeAssetPathsFor(IEnumerable<string> fileNames)\n        {\n            return fileNames.Select(fileName => fileName.NormalizePath()).ToArray();\n        }\n\n        static IEnumerable<string> SelectAttributeValues(\n            this XmlDocument xmlDocument,\n            string xpathQuery,\n            XmlNamespaceManager xmlNamespaceManager\n        )\n        {\n            var result = xmlDocument.SelectNodes(xpathQuery, xmlNamespaceManager);\n            foreach (XmlAttribute attribute in result)\n                yield return attribute.Value;\n        }\n\n        static IEnumerable<string> SelectInnerText(\n            this XmlDocument xmlDocument,\n            string xpathQuery,\n            XmlNamespaceManager xmlNamespaceManager\n        )\n        {\n            var result = xmlDocument.SelectNodes(xpathQuery, xmlNamespaceManager);\n            foreach (XmlElement node in result)\n            {\n                yield return node.InnerText;\n            }\n        }\n\n        public static XmlDocument FromText(string textContent)\n        {\n            var xmlDocument = new XmlDocument();\n            xmlDocument.LoadXml(textContent);\n            return xmlDocument;\n        }\n\n        public static string GetInnerText(XmlDocument xmlDocument, string xpathQuery)\n        {\n            return xmlDocument\n                .SelectSingleNode(xpathQuery, GetModifiedXmlNamespaceManager(xmlDocument))\n                .InnerText;\n        }\n    }\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor/XMLUtilities.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 621289c67ca2afc46a7234db2b3a162e\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 64b1a000b20b1d548b250cce938b38d4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/Tests.meta",
    "content": "fileFormatVersion: 2\nguid: bd0942cdd7be63d4e82bf3896f603e90\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "com.tsk.ide.vscodetests/package.json",
    "content": "{\n    \"name\": \"com.tsk.ide.vscodetests\",\n    \"displayName\": \"TSK VSCode Editor Tests\",\n    \"description\": \"Unofficial code editor integration for supporting Visual Studio Code as code editor for Unity. Adds support for generating csproj files for intellisense purposes, auto discovery of installations, etc.\",\n    \"version\": \"1.3.6\",\n    \"unity\": \"2021.3\",\n    \"dependencies\": {\n        \"nuget.moq\": \"1.0.0\"\n    },\n    \"author\": {\n        \"name\": \"Chizaruu\",\n        \"email\": \"contact@humblegco.com\",\n        \"url\": \"https://github.com/Chizaruu\"\n    },\n    \"keywords\": [\n        \"visual studio code\",\n        \"vscode\",\n        \"code editor\",\n        \"editor\",\n        \"intellisense\",\n        \"c#\",\n        \"csharp\",\n        \"csproj\",\n        \"unity\",\n        \"unity3d\"\n    ],\n    \"repository\": \"https://github.com/Chizaruu/com.tsk.ide.vscode\"\n}\n"
  },
  {
    "path": "com.tsk.ide.vscodetests/package.json.meta",
    "content": "fileFormatVersion: 2\nguid: 9abf73ef1ccdaa840bd122dca21155fd\nPackageManifestImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  }
]