Full Code of game-ci/unity-test-runner for AI

main 8ae4bd6b2185 cached
259 files
2.6 MB
707.9k tokens
1716 symbols
1 requests
Download .txt
Showing preview only (2,832K chars total). Download the full file or copy to clipboard to get everything.
Repository: game-ci/unity-test-runner
Branch: main
Commit: 8ae4bd6b2185
Files: 259
Total size: 2.6 MB

Directory structure:
gitextract_yq8ss52c/

├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   ├── feature_request.md
│   │   └── other.md
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── cats.yml
│       ├── main.yml
│       └── versioning.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .oxfmtrc.json
├── .oxlintrc.json
├── .yarnrc.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── action.yml
├── artifacts/
│   ├── editmode-results.xml
│   └── playmode-results.xml
├── dist/
│   ├── BlankProject/
│   │   ├── .gitignore
│   │   ├── Assets/
│   │   │   ├── Scenes/
│   │   │   │   ├── SampleScene.unity
│   │   │   │   └── SampleScene.unity.meta
│   │   │   └── Scenes.meta
│   │   ├── Packages/
│   │   │   ├── manifest.json
│   │   │   └── packages-lock.json
│   │   └── ProjectSettings/
│   │       ├── AudioManager.asset
│   │       ├── ClusterInputManager.asset
│   │       ├── DynamicsManager.asset
│   │       ├── EditorBuildSettings.asset
│   │       ├── EditorSettings.asset
│   │       ├── GraphicsSettings.asset
│   │       ├── InputManager.asset
│   │       ├── MemorySettings.asset
│   │       ├── NavMeshAreas.asset
│   │       ├── NetworkManager.asset
│   │       ├── PackageManagerSettings.asset
│   │       ├── Physics2DSettings.asset
│   │       ├── PresetManager.asset
│   │       ├── ProjectSettings.asset
│   │       ├── ProjectVersion.txt
│   │       ├── QualitySettings.asset
│   │       ├── TagManager.asset
│   │       ├── TimeManager.asset
│   │       ├── UnityConnectSettings.asset
│   │       ├── VFXManager.asset
│   │       ├── VersionControlSettings.asset
│   │       └── boot.config
│   ├── index.js
│   ├── licenses.txt
│   ├── main.js
│   ├── platforms/
│   │   ├── ubuntu/
│   │   │   ├── activate.sh
│   │   │   ├── entrypoint.sh
│   │   │   ├── return_license.sh
│   │   │   ├── run_steps.sh
│   │   │   ├── run_tests.sh
│   │   │   ├── set_extra_git_configs.sh
│   │   │   └── set_gitcredential.sh
│   │   └── windows/
│   │       ├── activate.ps1
│   │       ├── entrypoint.ps1
│   │       ├── return_license.ps1
│   │       ├── run_tests.ps1
│   │       └── set_gitcredential.ps1
│   ├── post.js
│   ├── results-check-details.hbs
│   ├── results-check-summary.hbs
│   ├── sourcemap-register.js
│   ├── test-standalone-scripts/
│   │   ├── .gitignore
│   │   ├── Assets/
│   │   │   ├── Editor/
│   │   │   │   ├── UnityTestRunnerAction/
│   │   │   │   │   ├── PlayerBuildModifier.cs
│   │   │   │   │   └── PlayerBuildModifier.cs.meta
│   │   │   │   └── UnityTestRunnerAction.meta
│   │   │   ├── Editor.meta
│   │   │   ├── Player/
│   │   │   │   ├── UnityTestRunnerAction/
│   │   │   │   │   ├── TestRunCallback.cs
│   │   │   │   │   ├── TestRunCallback.cs.meta
│   │   │   │   │   ├── UnityTestRunnerAction.asmdef
│   │   │   │   │   └── UnityTestRunnerAction.asmdef.meta
│   │   │   │   └── UnityTestRunnerAction.meta
│   │   │   └── Player.meta
│   │   ├── Packages/
│   │   │   └── manifest.json
│   │   └── ProjectSettings/
│   │       ├── AudioManager.asset
│   │       ├── ClusterInputManager.asset
│   │       ├── DynamicsManager.asset
│   │       ├── EditorBuildSettings.asset
│   │       ├── EditorSettings.asset
│   │       ├── GraphicsSettings.asset
│   │       ├── InputManager.asset
│   │       ├── NavMeshAreas.asset
│   │       ├── Physics2DSettings.asset
│   │       ├── PresetManager.asset
│   │       ├── ProjectSettings.asset
│   │       ├── ProjectVersion.txt
│   │       ├── QualitySettings.asset
│   │       ├── TagManager.asset
│   │       ├── TimeManager.asset
│   │       ├── UnityConnectSettings.asset
│   │       ├── VFXManager.asset
│   │       └── XRSettings.asset
│   └── unity-config/
│       └── services-config.json.template
├── mise.toml
├── package.json
├── scripts/
│   └── ensure-husky.mjs
├── src/
│   ├── index.ts
│   ├── main.ts
│   ├── model/
│   │   ├── action.test.ts
│   │   ├── action.ts
│   │   ├── docker.test.ts
│   │   ├── docker.ts
│   │   ├── image-environment-factory.ts
│   │   ├── image-tag.test.ts
│   │   ├── image-tag.ts
│   │   ├── index.test.ts
│   │   ├── index.ts
│   │   ├── input.test.ts
│   │   ├── input.ts
│   │   ├── licensing-server-setup.ts
│   │   ├── output.test.ts
│   │   ├── output.ts
│   │   ├── platform.test.ts
│   │   ├── platform.ts
│   │   ├── results-check.test.ts
│   │   ├── results-check.ts
│   │   ├── results-meta.ts
│   │   ├── results-parser.test.ts
│   │   ├── results-parser.ts
│   │   ├── results-report.ts
│   │   ├── unity-version-parser.test.ts
│   │   └── unity-version-parser.ts
│   ├── post.ts
│   ├── test/
│   │   └── setup.ts
│   └── views/
│       ├── results-check-details.hbs
│       └── results-check-summary.hbs
├── tsconfig.json
├── unity-package-with-correct-tests/
│   ├── com.dependencyexample.testpackage/
│   │   ├── Editor/
│   │   │   ├── TimerFeature/
│   │   │   │   ├── TimerComponentEditor.cs
│   │   │   │   └── TimerComponentEditor.cs.meta
│   │   │   ├── TimerFeature.meta
│   │   │   ├── example.testpackage.Editor.asmdef
│   │   │   └── example.testpackage.Editor.asmdef.meta
│   │   ├── Editor.meta
│   │   ├── Runtime/
│   │   │   ├── TimerFeature/
│   │   │   │   ├── Scripts/
│   │   │   │   │   ├── BasicCounter.cs
│   │   │   │   │   ├── BasicCounter.cs.meta
│   │   │   │   │   ├── SampleComponent.cs
│   │   │   │   │   ├── SampleComponent.cs.meta
│   │   │   │   │   ├── TimerComponent.cs
│   │   │   │   │   └── TimerComponent.cs.meta
│   │   │   │   └── Scripts.meta
│   │   │   ├── TimerFeature.meta
│   │   │   ├── example.testpackage.Runtime.asmdef
│   │   │   └── example.testpackage.Runtime.asmdef.meta
│   │   ├── Runtime.meta
│   │   ├── Tests/
│   │   │   ├── Editor/
│   │   │   │   ├── SampleEditModeTest.cs
│   │   │   │   ├── SampleEditModeTest.cs.meta
│   │   │   │   ├── example.testpackage.EditorTests.asmdef
│   │   │   │   └── example.testpackage.EditorTests.asmdef.meta
│   │   │   ├── Editor.meta
│   │   │   ├── Runtime/
│   │   │   │   ├── SampleComponentTest.cs
│   │   │   │   ├── SampleComponentTest.cs.meta
│   │   │   │   ├── SamplePlayModeTest.cs
│   │   │   │   ├── SamplePlayModeTest.cs.meta
│   │   │   │   ├── TimerComponentTest.cs
│   │   │   │   ├── TimerComponentTest.cs.meta
│   │   │   │   ├── example.testpackage.RuntimeTests.asmdef
│   │   │   │   └── example.testpackage.RuntimeTests.asmdef.meta
│   │   │   └── Runtime.meta
│   │   ├── Tests.meta
│   │   ├── package.json
│   │   └── package.json.meta
│   └── com.example.testpackage/
│       ├── Editor/
│       │   ├── TimerFeature/
│       │   │   ├── TimerComponentEditor.cs
│       │   │   └── TimerComponentEditor.cs.meta
│       │   ├── TimerFeature.meta
│       │   ├── example.testpackage.Editor.asmdef
│       │   └── example.testpackage.Editor.asmdef.meta
│       ├── Editor.meta
│       ├── Runtime/
│       │   ├── TimerFeature/
│       │   │   ├── Scripts/
│       │   │   │   ├── BasicCounter.cs
│       │   │   │   ├── BasicCounter.cs.meta
│       │   │   │   ├── SampleComponent.cs
│       │   │   │   ├── SampleComponent.cs.meta
│       │   │   │   ├── TimerComponent.cs
│       │   │   │   └── TimerComponent.cs.meta
│       │   │   └── Scripts.meta
│       │   ├── TimerFeature.meta
│       │   ├── example.testpackage.Runtime.asmdef
│       │   └── example.testpackage.Runtime.asmdef.meta
│       ├── Runtime.meta
│       ├── Tests/
│       │   ├── Editor/
│       │   │   ├── SampleEditModeTest.cs
│       │   │   ├── SampleEditModeTest.cs.meta
│       │   │   ├── example.testpackage.EditorTests.asmdef
│       │   │   └── example.testpackage.EditorTests.asmdef.meta
│       │   ├── Editor.meta
│       │   ├── Runtime/
│       │   │   ├── SampleComponentTest.cs
│       │   │   ├── SampleComponentTest.cs.meta
│       │   │   ├── SamplePlayModeTest.cs
│       │   │   ├── SamplePlayModeTest.cs.meta
│       │   │   ├── TimerComponentTest.cs
│       │   │   ├── TimerComponentTest.cs.meta
│       │   │   ├── example.testpackage.RuntimeTests.asmdef
│       │   │   └── example.testpackage.RuntimeTests.asmdef.meta
│       │   └── Runtime.meta
│       ├── Tests.meta
│       ├── package.json
│       └── package.json.meta
├── unity-project-with-correct-tests/
│   ├── .gitattributes
│   ├── .gitignore
│   ├── .vscode/
│   │   └── settings.json
│   ├── Assets/
│   │   ├── Scenes/
│   │   │   ├── SampleScene.unity
│   │   │   └── SampleScene.unity.meta
│   │   ├── Scenes.meta
│   │   ├── Scripts/
│   │   │   ├── BasicCounter.cs
│   │   │   ├── BasicCounter.cs.meta
│   │   │   ├── MyScripts.asmdef
│   │   │   ├── MyScripts.asmdef.meta
│   │   │   ├── SampleComponent.cs
│   │   │   ├── SampleComponent.cs.meta
│   │   │   ├── TimerComponent.cs
│   │   │   └── TimerComponent.cs.meta
│   │   ├── Scripts.meta
│   │   ├── Tests/
│   │   │   ├── EditMode/
│   │   │   │   ├── EditModeTests.asmdef
│   │   │   │   ├── EditModeTests.asmdef.meta
│   │   │   │   ├── SampleEditModeTest.cs
│   │   │   │   └── SampleEditModeTest.cs.meta
│   │   │   ├── EditMode.meta
│   │   │   ├── PlayMode/
│   │   │   │   ├── PlayModeTests.asmdef
│   │   │   │   ├── PlayModeTests.asmdef.meta
│   │   │   │   ├── SampleComponentTest.cs
│   │   │   │   ├── SampleComponentTest.cs.meta
│   │   │   │   ├── SamplePlayModeTest.cs
│   │   │   │   ├── SamplePlayModeTest.cs.meta
│   │   │   │   ├── TimerComponentTest.cs
│   │   │   │   └── TimerComponentTest.cs.meta
│   │   │   └── PlayMode.meta
│   │   └── Tests.meta
│   ├── Packages/
│   │   ├── manifest.json
│   │   └── packages-lock.json
│   └── ProjectSettings/
│       ├── AudioManager.asset
│       ├── ClusterInputManager.asset
│       ├── DynamicsManager.asset
│       ├── EditorBuildSettings.asset
│       ├── EditorSettings.asset
│       ├── GraphicsSettings.asset
│       ├── InputManager.asset
│       ├── MemorySettings.asset
│       ├── NavMeshAreas.asset
│       ├── PackageManagerSettings.asset
│       ├── Physics2DSettings.asset
│       ├── PresetManager.asset
│       ├── ProjectSettings.asset
│       ├── ProjectVersion.txt
│       ├── QualitySettings.asset
│       ├── TagManager.asset
│       ├── TimeManager.asset
│       ├── UnityConnectSettings.asset
│       ├── VFXManager.asset
│       ├── VersionControlSettings.asset
│       └── XRSettings.asset
└── vitest.config.mts

================================================
FILE CONTENTS
================================================

================================================
FILE: .dockerignore
================================================
# Order ignore, include
*

# Files required for the action
!dist/


================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 100
tab_width = 2
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false

[*.{yml,yaml}]
max_line_length = off

[COMMIT_EDITMSG]
max_line_length = off


================================================
FILE: .gitattributes
================================================
dist/index* -diff linguist-generated=true
dist/licenses* -diff linguist-generated=true
dist/sourcemap* -diff linguist-generated=true


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: game-ci
patreon: # Replace with a single Patreon username
open_collective: # replace with a single OpenCollective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---

**Bug description**

<!--A clear and concise description of what the bug is.-->

**How to reproduce**

<!--Steps to reproduce the behavior:-->

- **Expected behavior**

<!--A clear and concise description of what you expected to happen.-->

**Additional details**

<!--Please add context, links, reasons, screenshots, etc.-->


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Discuss on Discord
    url: https://game.ci/discord
    about: Join our Discord community


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an improvement, or a new feature
title: ''
labels: ''
assignees: ''
---

**Context**

<!--Please describe a proper context-->

**Suggested solution**

<!--Tell us what you would suggest-->

**Considered alternatives**

<!--Please add any alternative solutions that you have considered-->

**Additional details**

<!--Please add context, links, reasons, screenshots, etc.-->


================================================
FILE: .github/ISSUE_TEMPLATE/other.md
================================================
---
name: Other
about: Everything else
title: ''
labels: ''
assignees: ''
---


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: github-actions
    directory: '/'
    schedule:
      interval: daily
    open-pull-requests-limit: 10


================================================
FILE: .github/pull_request_template.md
================================================
#### Changes

- ...

#### Related Issues

- ...

#### Related PRs

- ...

#### Successful Workflow Run Link

PRs don't have access to secrets so you will need to provide a link to a successful run
of the workflows from your own repo.

- ...

#### Checklist

<!-- please check all items and add your own -->

- [x] Read the contribution [guide](../CONTRIBUTING.md) and accept the [code](../CODE_OF_CONDUCT.md) of conduct
- [ ] Docs (If new inputs or outputs have been added or changes to behavior that should be documented. Please make a PR
      in the [documentation repo](https://github.com/game-ci/documentation))
- [ ] Readme (updated or not needed)
- [ ] Tests (added, updated or not needed)


================================================
FILE: .github/workflows/cats.yml
================================================
name: Cats 😺

on:
  pull_request_target:
    types:
      - opened
      - reopened

jobs:
  aCatForCreatingThePullRequest:
    name: A cat for your effort!
    runs-on: ubuntu-latest
    steps:
      - uses: ruairidhwm/action-cats@1.0.2
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/main.yml
================================================
name: Actions 😎
on:
  push:
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
  UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
  UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}

jobs:
  tests:
    name: Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Read Node version from mise.toml
        id: node
        run: echo "version=$(grep -E '^node\s*=' mise.toml | sed -E 's/.*"([^"]+)".*/\1/')" >> "$GITHUB_OUTPUT"

      - name: Install package manager (from package.json)
        run: |
          corepack enable
          corepack install

      - uses: actions/setup-node@v4
        with:
          node-version: ${{ steps.node.outputs.version }}

      - name: Resolve yarn cache folder
        id: yarn-config
        run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"

      - name: Restore yarn install cache (node_modules + cacheFolder + install-state)
        uses: actions/cache@v4
        with:
          path: |
            node_modules
            ${{ steps.yarn-config.outputs.cacheFolder }}
            .yarn/install-state.gz
          key: yarn-${{ runner.os }}-node${{ steps.node.outputs.version }}-${{ hashFiles('yarn.lock') }}
          restore-keys: |
            yarn-${{ runner.os }}-node${{ steps.node.outputs.version }}-

      - name: Install deps
        env:
          YARN_ENABLE_HARDENED_MODE: 'false'
        run: |
          case "$(yarn --version)" in 1.*) echo 'expected up-to-date yarn version'; exit 1 ;; esac
          yarn install --immutable

      - name: Format
        run: yarn format:check

      - name: Lint
        run: yarn lint

      - name: Typecheck
        run: yarn typecheck

      - name: Test
        run: yarn test

      - name: Build
        run: yarn build || { echo 'build command should always succeed'; exit 61; }

  testAllModesLikeInTheReadme:
    name: Test in ${{ matrix.testMode }} of version ${{ matrix.unityVersion }} on ${{ matrix.baseRunner }}
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        projectPath:
          - unity-project-with-correct-tests
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
        testMode:
          - playmode
          - editmode
          - standalone
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - name: Checkout
        uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}
      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      - uses: ./
        id: tests
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: ${{ matrix.testMode }}
          artifactsPath: ${{ matrix.testMode }}-artifacts
          customParameters: -profile SomeProfile -someBoolean -someValue exampleValue
      - uses: actions/upload-artifact@v4
        with:
          name: Test results for ${{ matrix.testMode }} (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.tests.outputs.artifactsPath }}
          retention-days: 14

  testRunnerInAllModes:
    name: Test all modes ✨
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        projectPath:
          - unity-project-with-correct-tests
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}

      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      # Configure test runner
      - name: Run tests
        id: allTests
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: all
          coverageOptions: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+MyScripts;dontClear'
          # Test implicit artifactsPath, by not setting it

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Test results (all) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.allTests.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Coverage results (all) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.allTests.outputs.coveragePath }}
          retention-days: 14

  testRunnerInEditMode:
    name: Test edit mode 📝
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
        projectPath:
          - unity-project-with-correct-tests
        runAsHostUser:
          - true
          - false
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}

      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      # Configure test runner
      - name: Run tests
        id: editMode
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          runAsHostUser: ${{ matrix.runAsHostUser }}
          testMode: editmode
          artifactsPath: artifacts/editmode

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Test results (edit mode) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }}, ${{ matrix.runAsHostUser }})
          path: ${{ steps.editMode.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Coverage results (edit mode) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }}, ${{ matrix.runAsHostUser }})
          path: ${{ steps.editMode.outputs.coveragePath }}
          retention-days: 14

  testRunnerInPlayMode:
    name: Test play mode 📺
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        projectPath:
          - unity-project-with-correct-tests
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}

      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      # Configure test runner
      - name: Run tests
        id: playMode
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: playmode
          artifactsPath: artifacts/playmode

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Test results (play mode) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.playMode.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Coverage results (play mode) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.playMode.outputs.coveragePath }}
          retention-days: 14

  testRunnerInStandalone:
    name: Test standalone 📺
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        projectPath:
          - unity-project-with-correct-tests
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}-

      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      # Configure test runner
      - name: Run tests
        id: standalone
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: standalone
          artifactsPath: artifacts/standalone

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Test results (play mode standalone) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.standalone.outputs.artifactsPath }}
          retention-days: 14

  testRunnerInStandaloneWithIL2CPP:
    name: Test standalone with IL2CPP 📺
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        projectPath:
          - unity-project-with-correct-tests
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}-

      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      # Set scripting backend to IL2CPP
      - name: Rewrite ProjectSettings
        run: |
          DefineOriginal="  scriptingBackend: {}"
          DefineReplace="  scriptingBackend: \\n    Standalone: 1"
          sed -i "{s/$DefineOriginal/$DefineReplace/g}" ${{ matrix.projectPath }}/ProjectSettings/ProjectSettings.asset
        shell: bash

      # Configure test runner
      - name: Run tests
        id: standalone
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: standalone
          artifactsPath: artifacts/standalone

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Test results (play mode standalone il2cpp) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: ${{ steps.standalone.outputs.artifactsPath }}
          retention-days: 14

  testEachModeSequentially:
    name: Test each mode sequentially 👩‍👩‍👧‍👦 # don't try this at home (it's much slower)
    runs-on: ${{ matrix.baseRunner }}
    strategy:
      fail-fast: false
      matrix:
        baseRunner:
          - ubuntu-latest
          - windows-2022
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
        projectPath:
          - unity-project-with-correct-tests
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      ###########################
      #          Cache          #
      ###########################
      - uses: actions/cache@v4
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.baseRunner }}-${{ matrix.projectPath }}
          restore-keys: |
            Library-${{ matrix.baseRunner }}-

      ###########################
      #    Docker Readiness     #
      ###########################
      - name: Ensure Docker daemon is ready (Windows runners only)
        if: runner.os == 'Windows'
        timeout-minutes: 2
        shell: powershell
        run: |
          $maxRetries = 10
          $retryDelay = 6
          for ($i = 0; $i -lt $maxRetries; $i++) {
            $svc = Get-Service docker -ErrorAction SilentlyContinue
            if ($svc -and $svc.Status -eq 'Running') {
              docker version 2>$null
              if ($LASTEXITCODE -eq 0) {
                Write-Host "Docker is ready."
                exit 0
              }
            }
            if ($svc -and $svc.Status -eq 'Stopped') {
              Write-Host "Docker service stopped, attempting to start..."
              Start-Service docker -ErrorAction SilentlyContinue
            }
            Write-Host "Waiting for Docker daemon (attempt $($i+1)/$maxRetries)..."
            Start-Sleep -Seconds $retryDelay
          }
          Write-Error "Docker daemon did not start within $($maxRetries * $retryDelay) seconds"
          exit 1

      # Configure first test runner
      - name: Tests in editmode 📝
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: editmode
          artifactsPath: artifacts/editmode

      # Configure second test runner
      - name: Tests in playmode 📺
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: playmode
          artifactsPath: artifacts/playmode

      # Configure third test runner
      - name: Tests in standalone 📺
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: standalone
          artifactsPath: artifacts/playmode

      # Upload combined artifacts
      - name: Upload combined test results
        uses: actions/upload-artifact@v4
        with:
          name: Test results (combined sequential) (${{ matrix.baseRunner }}, ${{ matrix.unityVersion }})
          path: artifacts/
          retention-days: 14

  testAllPackageModesLikeInTheReadme:
    name: Test package mode 📦 in ${{ matrix.testMode }} on version ${{ matrix.unityVersion }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        projectPath:
          - unity-package-with-correct-tests/com.example.testpackage
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
        testMode:
          - playmode
          - editmode

    steps:
      ###########################
      #         Checkout        #
      ###########################
      - name: Checkout
        uses: actions/checkout@v4
        with:
          lfs: true

      - uses: ./
        id: packageTests
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: ${{ matrix.testMode }}
          artifactsPath: ${{ matrix.testMode }}-packageArtifacts
          customParameters: -profile SomeProfile -someBoolean -someValue exampleValue
          packageMode: true

      - uses: actions/upload-artifact@v4
        with:
          name: Package test results for ${{ matrix.testMode }} (${{ matrix.unityVersion }})
          path: ${{ steps.packageTests.outputs.artifactsPath }}
          retention-days: 14

  testPackageRunnerInAllModes:
    name: Test package mode in all modes 📦✨
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        projectPath:
          - unity-package-with-correct-tests/com.example.testpackage
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      # Configure test runner
      - name: Run tests
        id: packageAllTests
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: all
          coverageOptions: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+example.testpackage.*,-*Tests*'
          packageMode: true
          # Test implicit artifactsPath, by not setting it

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Package test results (all) (${{ matrix.unityVersion }})
          path: ${{ steps.packageAllTests.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Package Coverage results (all) (${{ matrix.unityVersion }})
          path: ${{ steps.packageAllTests.outputs.coveragePath }}
          retention-days: 14

  testPackageRunnerInEditMode:
    name: Test package mode in edit mode 📦📝
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
        projectPath:
          - unity-package-with-correct-tests/com.example.testpackage
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      # Configure test runner
      - name: Run tests
        id: packageEditMode
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: editmode
          coverageOptions: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+example.testpackage.*,-*Tests*'
          artifactsPath: artifacts/packageeditmode
          packageMode: true

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Package test results (edit mode) (${{ matrix.unityVersion }})
          path: ${{ steps.packageEditMode.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Package Coverage results (edit mode) (${{ matrix.unityVersion }})
          path: ${{ steps.packageEditMode.outputs.coveragePath }}
          retention-days: 14

  testPackageRunnerInPlayMode:
    name: Test package mode in play mode 📦📺
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        projectPath:
          - unity-package-with-correct-tests/com.example.testpackage
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      # Configure test runner
      - name: Run tests
        id: packagePlayMode
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: playmode
          coverageOptions: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+example.testpackage.*,-*Tests*'
          artifactsPath: artifacts/packageplaymode
          packageMode: true

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Package test results (play mode) (${{ matrix.unityVersion }})
          path: ${{ steps.packagePlayMode.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Package Coverage results (play mode) (${{ matrix.unityVersion }})
          path: ${{ steps.packagePlayMode.outputs.coveragePath }}
          retention-days: 14

  testPackageModeEachModeSequentially:
    name: Test package mode in each mode sequentially 📦 👩‍👩‍👧‍👦 # don't try this at home (it's much slower)
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
        projectPath:
          - unity-package-with-correct-tests/com.example.testpackage
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      # Configure first test runner
      - name: Test package mode in editmode 📦📝
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: editmode
          artifactsPath: packageArtifacts/editmode
          packageMode: true

      # Configure second test runner
      - name: Test package mode in playmode 📦📺
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: playmode
          artifactsPath: packageArtifacts/playmode
          packageMode: true

      # Upload combined artifacts
      - name: Upload combined test results
        uses: actions/upload-artifact@v4
        with:
          name: Package test results (combined sequential) (${{ matrix.unityVersion }})
          path: packageArtifacts/
          retention-days: 14

  testPackageRunnerWithScopeRegistry:
    name: Test package mode in all modes with Scoped Registry 📦✨
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        projectPath:
          - unity-package-with-correct-tests/com.dependencyexample.testpackage
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      # Configure test runner
      - name: Run tests
        id: packageAllTests
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: all
          coverageOptions: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+dependencyexample.testpackage.*,-*Tests*'
          packageMode: true
          scopedRegistryUrl: https://package.openupm.com
          registryScopes: 'com.cysharp.unitask'
          # Test implicit artifactsPath, by not setting it

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Package test results (Scope Registry) (${{ matrix.unityVersion }})
          path: ${{ steps.packageAllTests.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Package Coverage results (Scope Registry) (${{ matrix.unityVersion }})
          path: ${{ steps.packageAllTests.outputs.coveragePath }}
          retention-days: 14

  testPackageRunnerWithScopeRegistryAndMultipleScopes:
    name: Test package mode in all modes with Scoped Registry and Multiple Scopes 🔎📦✨
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        projectPath:
          - unity-package-with-correct-tests/com.dependencyexample.testpackage
        unityVersion:
          - 2022.3.13f1
          - 2023.1.19f1
          - 2023.2.2f1
    steps:
      ###########################
      #         Checkout        #
      ###########################
      - uses: actions/checkout@v4
        with:
          lfs: true

      # Configure test runner
      - name: Run tests
        id: packageAllTests
        uses: ./
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          testMode: all
          coverageOptions: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+dependencyexample.testpackage.*,-*Tests*'
          packageMode: true
          scopedRegistryUrl: https://package.openupm.com
          registryScopes: 'com.cysharp, com.cysharp.unitask'
          # Test implicit artifactsPath, by not setting it

      # Upload artifacts
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Package test results (Multi Scope Regristy) (${{ matrix.unityVersion }})
          path: ${{ steps.packageAllTests.outputs.artifactsPath }}
          retention-days: 14

      # Upload coverage
      - name: Upload coverage results
        uses: actions/upload-artifact@v4
        with:
          name: Package Coverage results (Multi Scope Registry) (${{ matrix.unityVersion }})
          path: ${{ steps.packageAllTests.outputs.coveragePath }}
          retention-days: 14


================================================
FILE: .github/workflows/versioning.yml
================================================
name: Versioning

on:
  release:
    types: [published, edited]

jobs:
  updateMajorTag:
    name: Update major tag
    runs-on: ubuntu-latest
    steps:
      - uses: Actions-R-Us/actions-tagger@v2


================================================
FILE: .gitignore
================================================
.idea
node_modules
coverage/
lib/

# Yarn 4 (Berry)
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*


================================================
FILE: .husky/pre-commit
================================================
#!/usr/bin/env sh
yarn lint-staged
yarn typecheck

if command -v gitleaks >/dev/null 2>&1; then
  gitleaks protect --staged --no-banner --redact
fi


================================================
FILE: .oxfmtrc.json
================================================
{
  "semi": true,
  "singleQuote": true,
  "trailingComma": "all",
  "printWidth": 100,
  "proseWrap": "preserve",
  "sortPackageJson": false,
  "ignorePatterns": [
    "**/node_modules/**",
    "**/dist/**",
    "**/coverage/**",
    "**/.yarn/**",
    "default-build-script/**",
    "test-runner/**",
    "platforms/**"
  ]
}


================================================
FILE: .oxlintrc.json
================================================
{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "plugins": ["typescript", "vitest", "unicorn", "oxc"],
  "categories": {
    "correctness": "error",
    "suspicious": "error",
    "perf": "error"
  },
  "rules": {
    "vitest/require-mock-type-parameters": "off",
    "vitest/valid-title": "off",
    "vitest/valid-describe-callback": "off",
    "vitest/expect-expect": "off",
    "vitest/no-conditional-tests": "off",
    "vitest/no-conditional-expect": "off",
    "vitest/require-to-throw-message": "off",
    "vitest/no-disabled-tests": "warn",
    "unicorn/prefer-array-flat-map": "warn",
    "typescript/no-explicit-any": "warn",
    "typescript/ban-ts-comment": "off",
    "typescript/no-namespace": "off",
    "typescript/no-extraneous-class": "off",
    "no-bitwise": "off",
    "no-shadow": "off",
    "no-await-in-loop": "off",
    "no-underscore-dangle": "off",
    "unicorn/no-array-sort": "off",
    "unicorn/prefer-set-has": "off",
    "unicorn/consistent-function-scoping": "off",
    "unicorn/no-useless-spread": "warn",
    "eslint/preserve-caught-error": "warn",
    "oxc/no-map-spread": "warn"
  },
  "overrides": [
    {
      "files": ["**/*.test.ts", "**/*.spec.ts"],
      "rules": {
        "typescript/no-explicit-any": "off",
        "no-unused-vars": "off"
      }
    }
  ],
  "env": {
    "browser": false,
    "node": true,
    "es2024": true,
    "vitest/globals": true
  },
  "ignorePatterns": [
    "**/node_modules/**",
    "**/dist/**",
    "**/coverage/**",
    "**/.yarn/**",
    "default-build-script/**",
    "test-runner/**",
    "platforms/**"
  ]
}


================================================
FILE: .yarnrc.yml
================================================
approvedGitRepositories:
  - '**'

compressionLevel: mixed

enableGlobalCache: false

enableHardenedMode: false

nodeLinker: node-modules


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

- The use of sexualized language or imagery and unwelcome sexual attention or
  advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
  address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at webber@takken.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

## How to Contribute

#### Code of Conduct

This repository has adopted the Contributor Covenant as it's
Code of Conduct. It is expected that participants adhere to it.

#### Proposing a Change

If you are unsure about whether or not a change is desired,
you can create an issue. This is useful because it creates
the possibility for a discussion that's visible to everyone.

When fixing a bug it is fine to submit a pull request right away.

#### Sending a Pull Request

Steps to be performed to submit a pull request:

1. Fork the repository and create your branch from `main`.
2. Run `yarn` in the repository root.
3. If you've fixed a bug or added code that should be tested, add tests!
4. Fill out the description, link any related issues and submit your pull request.

#### Pull Request Prerequisites

You have [Node](https://nodejs.org/) installed at v12.2.0+ and [Yarn](https://yarnpkg.com/) at v1.18.0+.

Please note that commit hooks will run automatically to perform some tasks;

- format your code
- run tests & lint - `yarn lint && yarn test`
- build distributable files - `yarn build`

#### License

By contributing to this repository, you agree that your contributions will be licensed under its MIT license.


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2019-present Webber Takken <webber@takken.io>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Unity - Test runner

(Not affiliated with Unity Technologies)

GitHub Action to
[run tests](https://github.com/marketplace/actions/unity-test-runner)
for any Unity project and _some_ Unity packages.

Part of the <a href="https://game.ci">GameCI</a> open source project.
<br />
<br />

[![Actions status](https://github.com/game-ci/unity-test-runner/workflows/Actions%20%F0%9F%98%8E/badge.svg)](https://github.com/game-ci/unity-test-runner/actions?query=workflow%3A%22Actions+%F0%9F%98%8E%22)
<br />
<br />

## How to use

Find the
[docs](https://game.ci/docs/github/test-runner)
on the GameCI
[documentation website](https://game.ci/docs).

## Related actions

Visit the
GameCI <a href="https://github.com/game-ci/unity-actions">Unity Actions</a>
status repository for related Actions.

## Community

Feel free to join us on
<a href="http://game.ci/discord"><img height="30" src="media/Discord-Logo.svg" alt="Discord" /></a>
and engage with the community.

## Contributing

To help improve the documentation, please find the docs [repository](https://github.com/game-ci/documentation).

To contribute to this project, kindly read the [contribution guide](./CONTRIBUTING.md).

## Support us

GameCI is free for everyone forever.

You can support us at [OpenCollective](https://opencollective.com/game-ci).

## License

This repository is [MIT](./LICENSE) licensed.

This includes all contributions from the community.


================================================
FILE: action.yml
================================================
name: 'Unity - Test runner'
author: Webber Takken <webber@takken.io>
description: 'Run tests for any Unity project.'
inputs:
  unityVersion:
    required: false
    default: 'auto'
    description: 'Version of unity to use for testing the project. Use "auto" to get from your ProjectSettings/ProjectVersion.txt. ⚠️ If testing a Unity Package, this field is required and cannot be set to "auto".'
  customImage:
    required: false
    default: ''
    description: 'Specific docker image that should be used for testing the project. If packageMode is true, this image must have jq installed.'
  projectPath:
    required: false
    description: 'Path to the Unity project or package to be tested.'
  customParameters:
    required: false
    description: 'Extra parameters to configure the Unity editor run.'
  testMode:
    required: false
    default: 'all'
    description: 'The type of tests to be run by the test runner.'
  coverageOptions:
    required: false
    default: 'generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;dontClear'
    description: 'Optional coverage parameters for the -coverageOptions argument. To get coverage in Package Mode, pass assemblies from the package you want covered to the assemblyFilters option.'
  artifactsPath:
    required: false
    default: 'artifacts'
    description: 'Path where test artifacts should be stored.'
  useHostNetwork:
    required: false
    default: false
    description: 'Initialises Docker using the host network.'
  sshAgent:
    required: false
    default: ''
    description: 'SSH Agent path to forward to the container.'
  sshPublicKeysDirectoryPath:
    required: false
    default: ''
    description: 'Path to a directory containing SSH public keys to forward to the container.'
  gitPrivateToken:
    required: false
    default: ''
    description: 'GitHub Private Access Token (PAT) to pull from GitHub.'
  githubToken:
    required: false
    default: ''
    description: 'Token to authorize access to the GitHub REST API. If provided, a check run will be created with the test results.'
  checkName:
    required: false
    default: 'Test Results'
    description: 'Name for the check run that is created when a github token is provided.'
  packageMode:
    required: false
    default: false
    description: 'Whether the tests are being run for a Unity package instead of a Unity project. If true, the action can only be run on Linux runners, and any custom docker image passed to this action must have `jq` installed. NOTE: may not work properly for packages with dependencies outside of the Unity Registry.'
  scopedRegistryUrl:
    required: false
    default: ''
    description: 'Scoped registry to use for resolving package dependencies. Only applicable if packageMode is true.'
  registryScopes:
    required: false
    default: ''
    description: 'Registry scopes to use for resolving package dependencies. Only applicable if packageMode is true. Required if scopedRegistry is set.'
  chownFilesTo:
    required: false
    default: ''
    description: 'User and optionally group (user or user:group or uid:gid) to give ownership of the resulting build artifacts'
  dockerCpuLimit:
    required: false
    default: ''
    description: 'Number of CPU cores to assign the docker container. Defaults to all available cores on all platforms.'
  dockerMemoryLimit:
    required: false
    default: ''
    description:
      'Amount of memory to assign the docker container. Defaults to 95% of total system memory rounded down to the
      nearest megabyte on Linux and 80% on Windows. On unrecognized platforms, defaults to 75% of total system memory.
      To manually specify a value, use the format <number><unit>, where unit is either m or g. ie: 512m = 512 megabytes'
  dockerIsolationMode:
    required: false
    default: 'default'
    description:
      'Isolation mode to use for the docker container. Can be one of process, hyperv, or default. Default will pick the
      default mode as described by Microsoft where server versions use process and desktop versions use hyperv. Only
      applicable on Windows'
  unityLicensingServer:
    required: false
    default: ''
    description: 'Url to a unity license server for acquiring floating licenses.'
  containerRegistryRepository:
    required: false
    default: 'unityci/editor'
    description: 'Container registry and repository to pull image from. Only applicable if customImage is not set.'
  containerRegistryImageVersion:
    required: false
    default: '3'
    description: 'Container registry image version. Only applicable if customImage is not set.'
  runAsHostUser:
    required: false
    default: 'false'
    description:
      'Whether to run as a user that matches the host system or the default root container user. Only applicable to
      Linux hosts and containers. This is useful for fixing permission errors on Self-Hosted runners.'
outputs:
  artifactsPath:
    description: 'Path where the artifacts are stored.'
  coveragePath:
    description: 'Path where the code coverage results are stored.'
branding:
  icon: 'box'
  color: 'gray-dark'
runs:
  using: 'node20'
  main: 'dist/main.js'
  post: 'dist/post.js'


================================================
FILE: artifacts/editmode-results.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<test-run id="2" testcasecount="6" result="Failed(Child)" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.1168037">
  <test-suite type="TestSuite" id="1012" name="sample-project" fullname="sample-project" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.116804" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
    <properties />
    <failure>
      <message><![CDATA[One or more child tests had errors]]></message>
    </failure>
    <test-suite type="Assembly" id="1020" name="Editor.dll" fullname="/github/workspace/unity-project/Library/ScriptAssemblies/Editor.dll" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.087946" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
      <properties>
        <property name="_PID" value="78" />
        <property name="_APPDOMAIN" value="Unity Child Domain" />
        <property name="platform" value="EditMode" />
      </properties>
      <failure>
        <message><![CDATA[One or more child tests had errors]]></message>
      </failure>
      <test-suite type="TestSuite" id="1021" name="Editor" fullname="Editor" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.086212" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
        <properties />
        <failure>
          <message><![CDATA[One or more child tests had errors]]></message>
        </failure>
        <test-suite type="TestFixture" id="1013" name="EditorModeTest" fullname="Editor.EditorModeTest" classname="Editor.EditorModeTest" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.076416" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
          <properties />
          <failure>
            <message><![CDATA[One or more child tests had errors]]></message>
          </failure>
          <output><![CDATA[You are trying to create a MonoBehaviour using the 'new' keyword.  This is not allowed.  MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
]]></output>
          <test-case id="1016" name="FailedTest" fullname="Editor.EditorModeTest.FailedTest" methodname="FailedTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="330279882" result="Failed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.023093" asserts="0">
            <properties />
            <failure>
              <message><![CDATA[  Expected: True
  But was:  False
]]></message>
              <stack-trace><![CDATA[at Editor.EditorModeTest.FailedTest () [0x00000] in /github/workspace/unity-project/Assets/Editor/EditorModeTest.cs:21
]]></stack-trace>
            </failure>
          </test-case>
          <test-case id="1019" name="FailedUnityTest" fullname="Editor.EditorModeTest.FailedUnityTest" methodname="FailedUnityTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="347277877" result="Failed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.014203" asserts="0">
            <properties>
              <property name="_JOINTYPE" value="UnityCombinatorial" />
            </properties>
            <failure>
              <message><![CDATA[  Expected: True
  But was:  False
]]></message>
              <stack-trace><![CDATA[at Editor.EditorModeTest+<FailedUnityTest>d__5.MoveNext () [0x0002e] in /github/workspace/unity-project/Assets/Editor/EditorModeTest.cs:40
at UnityEngine.TestTools.TestEnumerator+<Execute>d__6.MoveNext () [0x00038] in /github/workspace/unity-project/Library/PackageCache/com.unity.test-framework@1.1.19/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs:36
]]></stack-trace>
            </failure>
          </test-case>
          <test-case id="1015" name="IgnoredTest" fullname="Editor.EditorModeTest.IgnoredTest" methodname="IgnoredTest" classname="Editor.EditorModeTest" runstate="Ignored" seed="1319288303" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.000218" asserts="0">
            <properties>
              <property name="_SKIPREASON" value="ignore" />
            </properties>
            <reason>
              <message><![CDATA[ignore]]></message>
            </reason>
          </test-case>
          <test-case id="1018" name="IgnoredUnityTest" fullname="Editor.EditorModeTest.IgnoredUnityTest" methodname="IgnoredUnityTest" classname="Editor.EditorModeTest" runstate="Ignored" seed="2034877647" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.000004" asserts="0">
            <properties>
              <property name="_JOINTYPE" value="UnityCombinatorial" />
              <property name="_SKIPREASON" value="ignore" />
            </properties>
            <reason>
              <message><![CDATA[ignore]]></message>
            </reason>
          </test-case>
          <test-case id="1014" name="PassedTest" fullname="Editor.EditorModeTest.PassedTest" methodname="PassedTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="387558551" result="Passed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.000366" asserts="0">
            <properties />
          </test-case>
          <test-case id="1017" name="PassedUnityTest" fullname="Editor.EditorModeTest.PassedUnityTest" methodname="PassedUnityTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="1069930397" result="Passed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.007903" asserts="0">
            <properties>
              <property name="_JOINTYPE" value="UnityCombinatorial" />
            </properties>
          </test-case>
        </test-suite>
      </test-suite>
    </test-suite>
  </test-suite>
</test-run>

================================================
FILE: artifacts/playmode-results.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<test-run id="2" testcasecount="8" result="Failed(Child)" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.1055695">
  <test-suite type="TestSuite" id="1000" name="sample-project" fullname="sample-project" runstate="Runnable" testcasecount="8" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.105570" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0">
    <properties />
    <failure>
      <message><![CDATA[One or more child tests had errors]]></message>
    </failure>
    <test-suite type="Assembly" id="1012" name="Assembly-CSharp.dll" fullname="/github/workspace/unity-project/Library/ScriptAssemblies/Assembly-CSharp.dll" runstate="Runnable" testcasecount="8" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.088008" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0">
      <properties>
        <property name="_PID" value="474" />
        <property name="_APPDOMAIN" value="Unity Child Domain" />
        <property name="platform" value="PlayMode" />
      </properties>
      <failure>
        <message><![CDATA[One or more child tests had errors]]></message>
      </failure>
      <test-suite type="TestSuite" id="1013" name="Tests" fullname="Tests" runstate="Runnable" testcasecount="8" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.084864" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0">
        <properties />
        <failure>
          <message><![CDATA[One or more child tests had errors]]></message>
        </failure>
        <test-suite type="TestFixture" id="1001" name="PlayModeTest" fullname="Tests.PlayModeTest" classname="Tests.PlayModeTest" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.074407" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
          <properties />
          <failure>
            <message><![CDATA[One or more child tests had errors]]></message>
          </failure>
          <test-case id="1004" name="FailedTest" fullname="Tests.PlayModeTest.FailedTest" methodname="FailedTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="1067965392" result="Failed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.034377" asserts="0">
            <properties />
            <failure>
              <message><![CDATA[  Expected: True
  But was:  False
]]></message>
              <stack-trace><![CDATA[at Tests.PlayModeTest.FailedTest () [0x00000] in /github/workspace/unity-project/Assets/Tests/PlayModeTest.cs:20
]]></stack-trace>
            </failure>
          </test-case>
          <test-case id="1007" name="FailedUnityTest" fullname="Tests.PlayModeTest.FailedUnityTest" methodname="FailedUnityTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="318345342" result="Failed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.009524" asserts="0">
            <properties>
              <property name="_JOINTYPE" value="UnityCombinatorial" />
            </properties>
            <failure>
              <message><![CDATA[  Expected: True
  But was:  False
]]></message>
              <stack-trace><![CDATA[at Tests.PlayModeTest+<FailedUnityTest>d__5.MoveNext () [0x0002e] in /github/workspace/unity-project/Assets/Tests/PlayModeTest.cs:39
at UnityEngine.TestTools.TestEnumerator+<Execute>d__6.MoveNext () [0x00038] in /github/workspace/unity-project/Library/PackageCache/com.unity.test-framework@1.1.19/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs:36
]]></stack-trace>
            </failure>
          </test-case>
          <test-case id="1003" name="IgnoredTest" fullname="Tests.PlayModeTest.IgnoredTest" methodname="IgnoredTest" classname="Tests.PlayModeTest" runstate="Ignored" seed="1914466070" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000211" asserts="0">
            <properties>
              <property name="_SKIPREASON" value="ignore" />
            </properties>
            <reason>
              <message><![CDATA[ignore]]></message>
            </reason>
          </test-case>
          <test-case id="1006" name="IgnoredUnityTest" fullname="Tests.PlayModeTest.IgnoredUnityTest" methodname="IgnoredUnityTest" classname="Tests.PlayModeTest" runstate="Ignored" seed="475291067" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000004" asserts="0">
            <properties>
              <property name="_JOINTYPE" value="UnityCombinatorial" />
              <property name="_SKIPREASON" value="ignore" />
            </properties>
            <reason>
              <message><![CDATA[ignore]]></message>
            </reason>
          </test-case>
          <test-case id="1002" name="PassedTest" fullname="Tests.PlayModeTest.PassedTest" methodname="PassedTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="635988114" result="Passed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000400" asserts="0">
            <properties />
          </test-case>
          <test-case id="1005" name="PassedUnityTest" fullname="Tests.PlayModeTest.PassedUnityTest" methodname="PassedUnityTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="881217608" result="Passed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000736" asserts="0">
            <properties>
              <property name="_JOINTYPE" value="UnityCombinatorial" />
            </properties>
          </test-case>
        </test-suite>
        <test-suite type="TestFixture" id="1008" name="SetupFailedTest" fullname="Tests.SetupFailedTest" classname="Tests.SetupFailedTest" runstate="Runnable" testcasecount="1" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.004318" total="1" passed="0" failed="1" inconclusive="0" skipped="0" asserts="0">
          <properties />
          <failure>
            <message><![CDATA[One or more child tests had errors]]></message>
          </failure>
          <test-case id="1009" name="PassedTest" fullname="Tests.SetupFailedTest.PassedTest" methodname="PassedTest" classname="Tests.SetupFailedTest" runstate="Runnable" seed="1423699315" result="Failed" label="Error" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.003206" asserts="0">
            <properties />
            <failure>
              <message><![CDATA[SetUp : System.NullReferenceException : Object reference not set to an instance of an object]]></message>
              <stack-trace><![CDATA[--SetUp
  at Tests.SetupFailedTest.SetUp () [0x00000] in /github/workspace/unity-project/Assets/Tests/SetupFailedTest.cs:10 
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <9577ac7a62ef43179789031239ba8798>:0 ]]></stack-trace>
            </failure>
          </test-case>
        </test-suite>
        <test-suite type="TestFixture" id="1010" name="TearDownFailedTest" fullname="Tests.TearDownFailedTest" classname="Tests.TearDownFailedTest" runstate="Runnable" testcasecount="1" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.001857" total="1" passed="0" failed="1" inconclusive="0" skipped="0" asserts="0">
          <properties />
          <failure>
            <message><![CDATA[One or more child tests had errors]]></message>
          </failure>
          <test-case id="1011" name="PassedTest" fullname="Tests.TearDownFailedTest.PassedTest" methodname="PassedTest" classname="Tests.TearDownFailedTest" runstate="Runnable" seed="1384928637" result="Failed" label="Error" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000755" asserts="0">
            <properties />
            <failure>
              <message><![CDATA[TearDown : System.NullReferenceException : Object reference not set to an instance of an object]]></message>
              <stack-trace><![CDATA[--TearDown
  at Tests.TearDownFailedTest.TearDown () [0x00000] in /github/workspace/unity-project/Assets/Tests/TearDownFailedTest.cs:10 
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <9577ac7a62ef43179789031239ba8798>:0 ]]></stack-trace>
            </failure>
          </test-case>
        </test-suite>
      </test-suite>
    </test-suite>
  </test-suite>
</test-run>

================================================
FILE: dist/BlankProject/.gitignore
================================================
Library/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/

# Uncomment this line if you wish to ignore the asset store tools plugin
# [Aa]ssets/AssetStoreTools*

# IDEs
.vs/
.idea/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.unitypackage

# Crashlytics generated file
crashlytics-build.properties


================================================
FILE: dist/BlankProject/Assets/Scenes/SampleScene.unity
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_OcclusionBakeSettings:
    smallestOccluder: 5
    smallestHole: 0.25
    backfaceThreshold: 100
  m_SceneGUID: 00000000000000000000000000000000
  m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 9
  m_Fog: 0
  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
  m_FogMode: 3
  m_FogDensity: 0.01
  m_LinearFogStart: 0
  m_LinearFogEnd: 300
  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
  m_AmbientIntensity: 1
  m_AmbientMode: 3
  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
  m_SkyboxMaterial: {fileID: 0}
  m_HaloStrength: 0.5
  m_FlareStrength: 1
  m_FlareFadeSpeed: 3
  m_HaloTexture: {fileID: 0}
  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
  m_DefaultReflectionMode: 0
  m_DefaultReflectionResolution: 128
  m_ReflectionBounces: 1
  m_ReflectionIntensity: 1
  m_CustomReflection: {fileID: 0}
  m_Sun: {fileID: 0}
  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
  m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 12
  m_GIWorkflowMode: 1
  m_GISettings:
    serializedVersion: 2
    m_BounceScale: 1
    m_IndirectOutputScale: 1
    m_AlbedoBoost: 1
    m_EnvironmentLightingMode: 0
    m_EnableBakedLightmaps: 0
    m_EnableRealtimeLightmaps: 0
  m_LightmapEditorSettings:
    serializedVersion: 12
    m_Resolution: 2
    m_BakeResolution: 40
    m_AtlasSize: 1024
    m_AO: 0
    m_AOMaxDistance: 1
    m_CompAOExponent: 1
    m_CompAOExponentDirect: 0
    m_ExtractAmbientOcclusion: 0
    m_Padding: 2
    m_LightmapParameters: {fileID: 0}
    m_LightmapsBakeMode: 1
    m_TextureCompression: 1
    m_FinalGather: 0
    m_FinalGatherFiltering: 1
    m_FinalGatherRayCount: 256
    m_ReflectionCompression: 2
    m_MixedBakeMode: 2
    m_BakeBackend: 0
    m_PVRSampling: 1
    m_PVRDirectSampleCount: 32
    m_PVRSampleCount: 500
    m_PVRBounces: 2
    m_PVREnvironmentSampleCount: 500
    m_PVREnvironmentReferencePointCount: 2048
    m_PVRFilteringMode: 2
    m_PVRDenoiserTypeDirect: 0
    m_PVRDenoiserTypeIndirect: 0
    m_PVRDenoiserTypeAO: 0
    m_PVRFilterTypeDirect: 0
    m_PVRFilterTypeIndirect: 0
    m_PVRFilterTypeAO: 0
    m_PVREnvironmentMIS: 0
    m_PVRCulling: 1
    m_PVRFilteringGaussRadiusDirect: 1
    m_PVRFilteringGaussRadiusIndirect: 5
    m_PVRFilteringGaussRadiusAO: 2
    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
    m_PVRFilteringAtrousPositionSigmaIndirect: 2
    m_PVRFilteringAtrousPositionSigmaAO: 1
    m_ExportTrainingData: 0
    m_TrainingDataDestination: TrainingData
    m_LightProbeSampleCountMultiplier: 4
  m_LightingDataAsset: {fileID: 0}
  m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
  serializedVersion: 2
  m_ObjectHideFlags: 0
  m_BuildSettings:
    serializedVersion: 2
    agentTypeID: 0
    agentRadius: 0.5
    agentHeight: 2
    agentSlope: 45
    agentClimb: 0.4
    ledgeDropHeight: 0
    maxJumpAcrossDistance: 0
    minRegionArea: 2
    manualCellSize: 0
    cellSize: 0.16666667
    manualTileSize: 0
    tileSize: 256
    accuratePlacement: 0
    maxJobWorkers: 0
    preserveTilesOutsideBounds: 0
    debug:
      m_Flags: 0
  m_NavMeshData: {fileID: 0}
--- !u!1 &519420028
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 519420032}
  - component: {fileID: 519420031}
  - component: {fileID: 519420029}
  m_Layer: 0
  m_Name: Main Camera
  m_TagString: MainCamera
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!81 &519420029
AudioListener:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 519420028}
  m_Enabled: 1
--- !u!20 &519420031
Camera:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 519420028}
  m_Enabled: 1
  serializedVersion: 2
  m_ClearFlags: 2
  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
  m_projectionMatrixMode: 1
  m_GateFitMode: 2
  m_FOVAxisMode: 0
  m_SensorSize: {x: 36, y: 24}
  m_LensShift: {x: 0, y: 0}
  m_FocalLength: 50
  m_NormalizedViewPortRect:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  near clip plane: 0.3
  far clip plane: 1000
  field of view: 60
  orthographic: 1
  orthographic size: 5
  m_Depth: -1
  m_CullingMask:
    serializedVersion: 2
    m_Bits: 4294967295
  m_RenderingPath: -1
  m_TargetTexture: {fileID: 0}
  m_TargetDisplay: 0
  m_TargetEye: 0
  m_HDR: 1
  m_AllowMSAA: 0
  m_AllowDynamicResolution: 0
  m_ForceIntoRT: 0
  m_OcclusionCulling: 0
  m_StereoConvergence: 10
  m_StereoSeparation: 0.022
--- !u!4 &519420032
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 519420028}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: -10}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}


================================================
FILE: dist/BlankProject/Assets/Scenes/SampleScene.unity.meta
================================================
fileFormatVersion: 2
guid: 2cda990e2423bbf4892e6590ba056729
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: dist/BlankProject/Assets/Scenes.meta
================================================
fileFormatVersion: 2
guid: 131a6b21c8605f84396be9f6751fb6e3
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: dist/BlankProject/Packages/manifest.json
================================================
{
  "dependencies": {
  }
}


================================================
FILE: dist/BlankProject/Packages/packages-lock.json
================================================
{
  "dependencies": {
  }
}


================================================
FILE: dist/BlankProject/ProjectSettings/AudioManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!11 &1
AudioManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Volume: 1
  Rolloff Scale: 1
  Doppler Factor: 1
  Default Speaker Mode: 2
  m_SampleRate: 0
  m_DSPBufferSize: 1024
  m_VirtualVoiceCount: 512
  m_RealVoiceCount: 32
  m_SpatializerPlugin: 
  m_AmbisonicDecoderPlugin: 
  m_DisableAudio: 0
  m_VirtualizeEffects: 1
  m_RequestedDSPBufferSize: 0


================================================
FILE: dist/BlankProject/ProjectSettings/ClusterInputManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!236 &1
ClusterInputManager:
  m_ObjectHideFlags: 0
  m_Inputs: []


================================================
FILE: dist/BlankProject/ProjectSettings/DynamicsManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!55 &1
PhysicsManager:
  m_ObjectHideFlags: 0
  serializedVersion: 13
  m_Gravity: {x: 0, y: -9.81, z: 0}
  m_DefaultMaterial: {fileID: 0}
  m_BounceThreshold: 2
  m_DefaultMaxDepenetrationVelocity: 10
  m_SleepThreshold: 0.005
  m_DefaultContactOffset: 0.01
  m_DefaultSolverIterations: 6
  m_DefaultSolverVelocityIterations: 1
  m_QueriesHitBackfaces: 0
  m_QueriesHitTriggers: 1
  m_EnableAdaptiveForce: 0
  m_ClothInterCollisionDistance: 0.1
  m_ClothInterCollisionStiffness: 0.2
  m_ContactsGeneration: 1
  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  m_AutoSimulation: 1
  m_AutoSyncTransforms: 0
  m_ReuseCollisionCallbacks: 1
  m_ClothInterCollisionSettingsToggle: 0
  m_ClothGravity: {x: 0, y: -9.81, z: 0}
  m_ContactPairsMode: 0
  m_BroadphaseType: 0
  m_WorldBounds:
    m_Center: {x: 0, y: 0, z: 0}
    m_Extent: {x: 250, y: 250, z: 250}
  m_WorldSubdivisions: 8
  m_FrictionType: 0
  m_EnableEnhancedDeterminism: 0
  m_EnableUnifiedHeightmaps: 1
  m_SolverType: 0
  m_DefaultMaxAngularSpeed: 50


================================================
FILE: dist/BlankProject/ProjectSettings/EditorBuildSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1045 &1
EditorBuildSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Scenes:
  - enabled: 1
    path: Assets/Scenes/SampleScene.unity
    guid: 2cda990e2423bbf4892e6590ba056729
  m_configObjects: {}


================================================
FILE: dist/BlankProject/ProjectSettings/EditorSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!159 &1
EditorSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 11
  m_SerializationMode: 2
  m_LineEndingsForNewScripts: 0
  m_DefaultBehaviorMode: 1
  m_PrefabRegularEnvironment: {fileID: 0}
  m_PrefabUIEnvironment: {fileID: 0}
  m_SpritePackerMode: 4
  m_SpritePackerPaddingPower: 1
  m_EtcTextureCompressorBehavior: 1
  m_EtcTextureFastCompressor: 1
  m_EtcTextureNormalCompressor: 2
  m_EtcTextureBestCompressor: 4
  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp
  m_ProjectGenerationRootNamespace: 
  m_EnableTextureStreamingInEditMode: 1
  m_EnableTextureStreamingInPlayMode: 1
  m_AsyncShaderCompilation: 1
  m_CachingShaderPreprocessor: 1
  m_PrefabModeAllowAutoSave: 1
  m_EnterPlayModeOptionsEnabled: 0
  m_EnterPlayModeOptions: 3
  m_GameObjectNamingDigits: 1
  m_GameObjectNamingScheme: 0
  m_AssetNamingUsesSpace: 1
  m_UseLegacyProbeSampleCount: 0
  m_SerializeInlineMappingsOnOneLine: 1
  m_DisableCookiesInLightmapper: 1
  m_AssetPipelineMode: 1
  m_CacheServerMode: 0
  m_CacheServerEndpoint: 
  m_CacheServerNamespacePrefix: default
  m_CacheServerEnableDownload: 1
  m_CacheServerEnableUpload: 1
  m_CacheServerEnableAuth: 0
  m_CacheServerEnableTls: 0


================================================
FILE: dist/BlankProject/ProjectSettings/GraphicsSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!30 &1
GraphicsSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 13
  m_Deferred:
    m_Mode: 1
    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
  m_DeferredReflections:
    m_Mode: 1
    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
  m_ScreenSpaceShadows:
    m_Mode: 1
    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
  m_LegacyDeferred:
    m_Mode: 1
    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
  m_DepthNormals:
    m_Mode: 1
    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
  m_MotionVectors:
    m_Mode: 1
    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
  m_LightHalo:
    m_Mode: 1
    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
  m_LensFlare:
    m_Mode: 1
    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
  m_VideoShadersIncludeMode: 2
  m_AlwaysIncludedShaders:
  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
  m_PreloadedShaders: []
  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
  m_CustomRenderPipeline: {fileID: 0}
  m_TransparencySortMode: 0
  m_TransparencySortAxis: {x: 0, y: 0, z: 1}
  m_DefaultRenderingPath: 1
  m_DefaultMobileRenderingPath: 1
  m_TierSettings: []
  m_LightmapStripping: 0
  m_FogStripping: 0
  m_InstancingStripping: 0
  m_LightmapKeepPlain: 1
  m_LightmapKeepDirCombined: 1
  m_LightmapKeepDynamicPlain: 1
  m_LightmapKeepDynamicDirCombined: 1
  m_LightmapKeepShadowMask: 1
  m_LightmapKeepSubtractive: 1
  m_FogKeepLinear: 1
  m_FogKeepExp: 1
  m_FogKeepExp2: 1
  m_AlbedoSwatchInfos: []
  m_LightsUseLinearIntensity: 0
  m_LightsUseColorTemperature: 0
  m_DefaultRenderingLayerMask: 1
  m_LogWhenShaderIsCompiled: 0


================================================
FILE: dist/BlankProject/ProjectSettings/InputManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!13 &1
InputManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Axes:
  - serializedVersion: 3
    m_Name: Horizontal
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: left
    positiveButton: right
    altNegativeButton: a
    altPositiveButton: d
    gravity: 3
    dead: 0.001
    sensitivity: 3
    snap: 1
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Vertical
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: down
    positiveButton: up
    altNegativeButton: s
    altPositiveButton: w
    gravity: 3
    dead: 0.001
    sensitivity: 3
    snap: 1
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire1
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left ctrl
    altNegativeButton: 
    altPositiveButton: mouse 0
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire2
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left alt
    altNegativeButton: 
    altPositiveButton: mouse 1
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire3
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left shift
    altNegativeButton: 
    altPositiveButton: mouse 2
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Jump
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: space
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Mouse X
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0
    sensitivity: 0.1
    snap: 0
    invert: 0
    type: 1
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Mouse Y
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0
    sensitivity: 0.1
    snap: 0
    invert: 0
    type: 1
    axis: 1
    joyNum: 0
  - serializedVersion: 3
    m_Name: Mouse ScrollWheel
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0
    sensitivity: 0.1
    snap: 0
    invert: 0
    type: 1
    axis: 2
    joyNum: 0
  - serializedVersion: 3
    m_Name: Horizontal
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0.19
    sensitivity: 1
    snap: 0
    invert: 0
    type: 2
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Vertical
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0.19
    sensitivity: 1
    snap: 0
    invert: 1
    type: 2
    axis: 1
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire1
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 0
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire2
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 1
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire3
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 2
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Jump
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 3
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Submit
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: return
    altNegativeButton: 
    altPositiveButton: joystick button 0
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Submit
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: enter
    altNegativeButton: 
    altPositiveButton: space
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Cancel
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: escape
    altNegativeButton: 
    altPositiveButton: joystick button 1
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Enable Debug Button 1
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left ctrl
    altNegativeButton: 
    altPositiveButton: joystick button 8
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Enable Debug Button 2
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: backspace
    altNegativeButton: 
    altPositiveButton: joystick button 9
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Reset
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left alt
    altNegativeButton: 
    altPositiveButton: joystick button 1
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Next
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: page down
    altNegativeButton: 
    altPositiveButton: joystick button 5
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Previous
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: page up
    altNegativeButton: 
    altPositiveButton: joystick button 4
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Validate
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: return
    altNegativeButton: 
    altPositiveButton: joystick button 0
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Persistent
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: right shift
    altNegativeButton: 
    altPositiveButton: joystick button 2
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Multiplier
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left shift
    altNegativeButton: 
    altPositiveButton: joystick button 3
    gravity: 0
    dead: 0
    sensitivity: 0
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Horizontal
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: left
    positiveButton: right
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Vertical
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: down
    positiveButton: up
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Vertical
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: down
    positiveButton: up
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 2
    axis: 6
    joyNum: 0
  - serializedVersion: 3
    m_Name: Debug Horizontal
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: left
    positiveButton: right
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 2
    axis: 5
    joyNum: 0


================================================
FILE: dist/BlankProject/ProjectSettings/MemorySettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!387306366 &1
MemorySettings:
  m_ObjectHideFlags: 0
  m_EditorMemorySettings:
    m_MainAllocatorBlockSize: -1
    m_ThreadAllocatorBlockSize: -1
    m_MainGfxBlockSize: -1
    m_ThreadGfxBlockSize: -1
    m_CacheBlockSize: -1
    m_TypetreeBlockSize: -1
    m_ProfilerBlockSize: -1
    m_ProfilerEditorBlockSize: -1
    m_BucketAllocatorGranularity: -1
    m_BucketAllocatorBucketsCount: -1
    m_BucketAllocatorBlockSize: -1
    m_BucketAllocatorBlockCount: -1
    m_ProfilerBucketAllocatorGranularity: -1
    m_ProfilerBucketAllocatorBucketsCount: -1
    m_ProfilerBucketAllocatorBlockSize: -1
    m_ProfilerBucketAllocatorBlockCount: -1
    m_TempAllocatorSizeMain: -1
    m_JobTempAllocatorBlockSize: -1
    m_BackgroundJobTempAllocatorBlockSize: -1
    m_JobTempAllocatorReducedBlockSize: -1
    m_TempAllocatorSizeGIBakingWorker: -1
    m_TempAllocatorSizeNavMeshWorker: -1
    m_TempAllocatorSizeAudioWorker: -1
    m_TempAllocatorSizeCloudWorker: -1
    m_TempAllocatorSizeGfx: -1
    m_TempAllocatorSizeJobWorker: -1
    m_TempAllocatorSizeBackgroundWorker: -1
    m_TempAllocatorSizePreloadManager: -1
  m_PlatformMemorySettings: {}


================================================
FILE: dist/BlankProject/ProjectSettings/NavMeshAreas.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!126 &1
NavMeshProjectSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  areas:
  - name: Walkable
    cost: 1
  - name: Not Walkable
    cost: 1
  - name: Jump
    cost: 2
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  m_LastAgentTypeID: -887442657
  m_Settings:
  - serializedVersion: 2
    agentTypeID: 0
    agentRadius: 0.5
    agentHeight: 2
    agentSlope: 45
    agentClimb: 0.75
    ledgeDropHeight: 0
    maxJumpAcrossDistance: 0
    minRegionArea: 2
    manualCellSize: 0
    cellSize: 0.16666667
    manualTileSize: 0
    tileSize: 256
    accuratePlacement: 0
    maxJobWorkers: 0
    preserveTilesOutsideBounds: 0
    debug:
      m_Flags: 0
  m_SettingNames:
  - Humanoid


================================================
FILE: dist/BlankProject/ProjectSettings/NetworkManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!149 &1
NetworkManager:
  m_ObjectHideFlags: 0
  m_DebugLevel: 0
  m_Sendrate: 15
  m_AssetToPrefab: {}


================================================
FILE: dist/BlankProject/ProjectSettings/PackageManagerSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
  m_ObjectHideFlags: 61
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
  m_Name: 
  m_EditorClassIdentifier: 
  m_EnablePreReleasePackages: 0
  m_EnablePackageDependencies: 0
  m_AdvancedSettingsExpanded: 1
  m_ScopedRegistriesSettingsExpanded: 1
  m_SeeAllPackageVersions: 0
  oneTimeWarningShown: 0
  m_Registries:
  - m_Id: main
    m_Name: 
    m_Url: https://packages.unity.com
    m_Scopes: []
    m_IsDefault: 1
    m_Capabilities: 7
  m_UserSelectedRegistryName: 
  m_UserAddingNewScopedRegistry: 0
  m_RegistryInfoDraft:
    m_ErrorMessage: 
    m_Original:
      m_Id: 
      m_Name: 
      m_Url: 
      m_Scopes: []
      m_IsDefault: 0
      m_Capabilities: 0
    m_Modified: 0
    m_Name: 
    m_Url: 
    m_Scopes:
    - 
    m_SelectedScopeIndex: 0


================================================
FILE: dist/BlankProject/ProjectSettings/Physics2DSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!19 &1
Physics2DSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 5
  m_Gravity: {x: 0, y: -9.81}
  m_DefaultMaterial: {fileID: 0}
  m_VelocityIterations: 8
  m_PositionIterations: 3
  m_VelocityThreshold: 1
  m_MaxLinearCorrection: 0.2
  m_MaxAngularCorrection: 8
  m_MaxTranslationSpeed: 100
  m_MaxRotationSpeed: 360
  m_BaumgarteScale: 0.2
  m_BaumgarteTimeOfImpactScale: 0.75
  m_TimeToSleep: 0.5
  m_LinearSleepTolerance: 0.01
  m_AngularSleepTolerance: 2
  m_DefaultContactOffset: 0.01
  m_JobOptions:
    serializedVersion: 2
    useMultithreading: 0
    useConsistencySorting: 0
    m_InterpolationPosesPerJob: 100
    m_NewContactsPerJob: 30
    m_CollideContactsPerJob: 100
    m_ClearFlagsPerJob: 200
    m_ClearBodyForcesPerJob: 200
    m_SyncDiscreteFixturesPerJob: 50
    m_SyncContinuousFixturesPerJob: 50
    m_FindNearestContactsPerJob: 100
    m_UpdateTriggerContactsPerJob: 100
    m_IslandSolverCostThreshold: 100
    m_IslandSolverBodyCostScale: 1
    m_IslandSolverContactCostScale: 10
    m_IslandSolverJointCostScale: 10
    m_IslandSolverBodiesPerJob: 50
    m_IslandSolverContactsPerJob: 50
  m_SimulationMode: 0
  m_QueriesHitTriggers: 1
  m_QueriesStartInColliders: 1
  m_CallbacksOnDisable: 1
  m_ReuseCollisionCallbacks: 1
  m_AutoSyncTransforms: 0
  m_AlwaysShowColliders: 0
  m_ShowColliderSleep: 1
  m_ShowColliderContacts: 0
  m_ShowColliderAABB: 0
  m_ContactArrowScale: 0.2
  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff


================================================
FILE: dist/BlankProject/ProjectSettings/PresetManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1386491679 &1
PresetManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_DefaultPresets: {}


================================================
FILE: dist/BlankProject/ProjectSettings/ProjectSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!129 &1
PlayerSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 23
  productGUID: 034a658b4a2c341fbb4fcd6299d7141d
  AndroidProfiler: 0
  AndroidFilterTouchesWhenObscured: 0
  AndroidEnableSustainedPerformanceMode: 0
  defaultScreenOrientation: 4
  targetDevice: 2
  useOnDemandResources: 0
  accelerometerFrequency: 60
  companyName: DefaultCompany
  productName: BlankProject
  defaultCursor: {fileID: 0}
  cursorHotspot: {x: 0, y: 0}
  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
  m_ShowUnitySplashScreen: 1
  m_ShowUnitySplashLogo: 1
  m_SplashScreenOverlayOpacity: 1
  m_SplashScreenAnimation: 1
  m_SplashScreenLogoStyle: 1
  m_SplashScreenDrawMode: 0
  m_SplashScreenBackgroundAnimationZoom: 1
  m_SplashScreenLogoAnimationZoom: 1
  m_SplashScreenBackgroundLandscapeAspect: 1
  m_SplashScreenBackgroundPortraitAspect: 1
  m_SplashScreenBackgroundLandscapeUvs:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  m_SplashScreenBackgroundPortraitUvs:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  m_SplashScreenLogos: []
  m_VirtualRealitySplashScreen: {fileID: 0}
  m_HolographicTrackingLossScreen: {fileID: 0}
  defaultScreenWidth: 1920
  defaultScreenHeight: 1080
  defaultScreenWidthWeb: 960
  defaultScreenHeightWeb: 600
  m_StereoRenderingPath: 0
  m_ActiveColorSpace: 0
  m_MTRendering: 1
  mipStripping: 0
  numberOfMipsStripped: 0
  m_StackTraceTypes: 010000000100000001000000010000000100000001000000
  iosShowActivityIndicatorOnLoading: -1
  androidShowActivityIndicatorOnLoading: -1
  iosUseCustomAppBackgroundBehavior: 0
  iosAllowHTTPDownload: 1
  allowedAutorotateToPortrait: 1
  allowedAutorotateToPortraitUpsideDown: 1
  allowedAutorotateToLandscapeRight: 1
  allowedAutorotateToLandscapeLeft: 1
  useOSAutorotation: 1
  use32BitDisplayBuffer: 1
  preserveFramebufferAlpha: 0
  disableDepthAndStencilBuffers: 0
  androidStartInFullscreen: 1
  androidRenderOutsideSafeArea: 1
  androidUseSwappy: 1
  androidBlitType: 0
  androidResizableWindow: 0
  androidDefaultWindowWidth: 1920
  androidDefaultWindowHeight: 1080
  androidMinimumWindowWidth: 400
  androidMinimumWindowHeight: 300
  androidFullscreenMode: 1
  defaultIsNativeResolution: 1
  macRetinaSupport: 1
  runInBackground: 0
  captureSingleScreen: 0
  muteOtherAudioSources: 0
  Prepare IOS For Recording: 0
  Force IOS Speakers When Recording: 0
  deferSystemGesturesMode: 0
  hideHomeButton: 0
  submitAnalytics: 1
  usePlayerLog: 1
  bakeCollisionMeshes: 0
  forceSingleInstance: 0
  useFlipModelSwapchain: 1
  resizableWindow: 0
  useMacAppStoreValidation: 0
  macAppStoreCategory: public.app-category.games
  gpuSkinning: 0
  xboxPIXTextureCapture: 0
  xboxEnableAvatar: 0
  xboxEnableKinect: 0
  xboxEnableKinectAutoTracking: 0
  xboxEnableFitness: 0
  visibleInBackground: 1
  allowFullscreenSwitch: 1
  fullscreenMode: 1
  xboxSpeechDB: 0
  xboxEnableHeadOrientation: 0
  xboxEnableGuest: 0
  xboxEnablePIXSampling: 0
  metalFramebufferOnly: 0
  xboxOneResolution: 0
  xboxOneSResolution: 0
  xboxOneXResolution: 3
  xboxOneMonoLoggingLevel: 0
  xboxOneLoggingLevel: 1
  xboxOneDisableEsram: 0
  xboxOneEnableTypeOptimization: 0
  xboxOnePresentImmediateThreshold: 0
  switchQueueCommandMemory: 1048576
  switchQueueControlMemory: 16384
  switchQueueComputeMemory: 262144
  switchNVNShaderPoolsGranularity: 33554432
  switchNVNDefaultPoolsGranularity: 16777216
  switchNVNOtherPoolsGranularity: 16777216
  switchNVNMaxPublicTextureIDCount: 0
  switchNVNMaxPublicSamplerIDCount: 0
  stadiaPresentMode: 0
  stadiaTargetFramerate: 0
  vulkanNumSwapchainBuffers: 3
  vulkanEnableSetSRGBWrite: 0
  vulkanEnablePreTransform: 0
  vulkanEnableLateAcquireNextImage: 0
  vulkanEnableCommandBufferRecycling: 1
  m_SupportedAspectRatios:
    4:3: 1
    5:4: 1
    16:10: 1
    16:9: 1
    Others: 1
  bundleVersion: 1.0
  preloadedAssets: []
  metroInputSource: 0
  wsaTransparentSwapchain: 0
  m_HolographicPauseOnTrackingLoss: 1
  xboxOneDisableKinectGpuReservation: 1
  xboxOneEnable7thCore: 1
  vrSettings:
    enable360StereoCapture: 0
  isWsaHolographicRemotingEnabled: 0
  enableFrameTimingStats: 0
  useHDRDisplay: 0
  D3DHDRBitDepth: 0
  m_ColorGamuts: 00000000
  targetPixelDensity: 30
  resolutionScalingMode: 0
  androidSupportedAspectRatio: 1
  androidMaxAspectRatio: 2.1
  applicationIdentifier:
    Standalone: com.DefaultCompany.2DProject
  buildNumber:
    Standalone: 0
    iPhone: 0
    tvOS: 0
  overrideDefaultApplicationIdentifier: 1
  AndroidBundleVersionCode: 1
  AndroidMinSdkVersion: 22
  AndroidTargetSdkVersion: 0
  AndroidPreferredInstallLocation: 1
  aotOptions: 
  stripEngineCode: 1
  iPhoneStrippingLevel: 0
  iPhoneScriptCallOptimization: 0
  ForceInternetPermission: 0
  ForceSDCardPermission: 0
  CreateWallpaper: 0
  APKExpansionFiles: 0
  keepLoadedShadersAlive: 0
  StripUnusedMeshComponents: 0
  VertexChannelCompressionMask: 4054
  iPhoneSdkVersion: 988
  iOSTargetOSVersionString: 11.0
  tvOSSdkVersion: 0
  tvOSRequireExtendedGameController: 0
  tvOSTargetOSVersionString: 11.0
  uIPrerenderedIcon: 0
  uIRequiresPersistentWiFi: 0
  uIRequiresFullScreen: 1
  uIStatusBarHidden: 1
  uIExitOnSuspend: 0
  uIStatusBarStyle: 0
  appleTVSplashScreen: {fileID: 0}
  appleTVSplashScreen2x: {fileID: 0}
  tvOSSmallIconLayers: []
  tvOSSmallIconLayers2x: []
  tvOSLargeIconLayers: []
  tvOSLargeIconLayers2x: []
  tvOSTopShelfImageLayers: []
  tvOSTopShelfImageLayers2x: []
  tvOSTopShelfImageWideLayers: []
  tvOSTopShelfImageWideLayers2x: []
  iOSLaunchScreenType: 0
  iOSLaunchScreenPortrait: {fileID: 0}
  iOSLaunchScreenLandscape: {fileID: 0}
  iOSLaunchScreenBackgroundColor:
    serializedVersion: 2
    rgba: 0
  iOSLaunchScreenFillPct: 100
  iOSLaunchScreenSize: 100
  iOSLaunchScreenCustomXibPath: 
  iOSLaunchScreeniPadType: 0
  iOSLaunchScreeniPadImage: {fileID: 0}
  iOSLaunchScreeniPadBackgroundColor:
    serializedVersion: 2
    rgba: 0
  iOSLaunchScreeniPadFillPct: 100
  iOSLaunchScreeniPadSize: 100
  iOSLaunchScreeniPadCustomXibPath: 
  iOSLaunchScreenCustomStoryboardPath: 
  iOSLaunchScreeniPadCustomStoryboardPath: 
  iOSDeviceRequirements: []
  iOSURLSchemes: []
  macOSURLSchemes: []
  iOSBackgroundModes: 0
  iOSMetalForceHardShadows: 0
  metalEditorSupport: 1
  metalAPIValidation: 1
  iOSRenderExtraFrameOnPause: 0
  iosCopyPluginsCodeInsteadOfSymlink: 0
  appleDeveloperTeamID: 
  iOSManualSigningProvisioningProfileID: 
  tvOSManualSigningProvisioningProfileID: 
  iOSManualSigningProvisioningProfileType: 0
  tvOSManualSigningProvisioningProfileType: 0
  appleEnableAutomaticSigning: 0
  iOSRequireARKit: 0
  iOSAutomaticallyDetectAndAddCapabilities: 1
  appleEnableProMotion: 0
  shaderPrecisionModel: 0
  clonedFromGUID: 10ad67313f4034357812315f3c407484
  templatePackageId: com.unity.template.2d@6.1.0
  templateDefaultScene: Assets/Scenes/SampleScene.unity
  useCustomMainManifest: 0
  useCustomLauncherManifest: 0
  useCustomMainGradleTemplate: 0
  useCustomLauncherGradleManifest: 0
  useCustomBaseGradleTemplate: 0
  useCustomGradlePropertiesTemplate: 0
  useCustomProguardFile: 0
  AndroidTargetArchitectures: 1
  AndroidTargetDevices: 0
  AndroidSplashScreenScale: 0
  androidSplashScreen: {fileID: 0}
  AndroidKeystoreName: 
  AndroidKeyaliasName: 
  AndroidBuildApkPerCpuArchitecture: 0
  AndroidTVCompatibility: 0
  AndroidIsGame: 1
  AndroidEnableTango: 0
  androidEnableBanner: 1
  androidUseLowAccuracyLocation: 0
  androidUseCustomKeystore: 0
  m_AndroidBanners:
  - width: 320
    height: 180
    banner: {fileID: 0}
  androidGamepadSupportLevel: 0
  chromeosInputEmulation: 1
  AndroidMinifyWithR8: 0
  AndroidMinifyRelease: 0
  AndroidMinifyDebug: 0
  AndroidValidateAppBundleSize: 1
  AndroidAppBundleSizeToValidate: 150
  m_BuildTargetIcons: []
  m_BuildTargetPlatformIcons: []
  m_BuildTargetBatching: []
  m_BuildTargetGraphicsJobs:
  - m_BuildTarget: MacStandaloneSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: Switch
    m_GraphicsJobs: 0
  - m_BuildTarget: MetroSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: AppleTVSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: BJMSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: LinuxStandaloneSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: PS4Player
    m_GraphicsJobs: 0
  - m_BuildTarget: iOSSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: WindowsStandaloneSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: XboxOnePlayer
    m_GraphicsJobs: 0
  - m_BuildTarget: LuminSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: AndroidPlayer
    m_GraphicsJobs: 0
  - m_BuildTarget: WebGLSupport
    m_GraphicsJobs: 0
  m_BuildTargetGraphicsJobMode: []
  m_BuildTargetGraphicsAPIs:
  - m_BuildTarget: AndroidPlayer
    m_APIs: 150000000b000000
    m_Automatic: 1
  - m_BuildTarget: iOSSupport
    m_APIs: 10000000
    m_Automatic: 1
  m_BuildTargetVRSettings: []
  openGLRequireES31: 0
  openGLRequireES31AEP: 0
  openGLRequireES32: 0
  m_TemplateCustomTags: {}
  mobileMTRendering:
    Android: 1
    iPhone: 1
    tvOS: 1
  m_BuildTargetGroupLightmapEncodingQuality: []
  m_BuildTargetGroupLightmapSettings: []
  m_BuildTargetNormalMapEncoding: []
  m_BuildTargetDefaultTextureCompressionFormat:
  - m_BuildTarget: Android
    m_Format: 3
  playModeTestRunnerEnabled: 0
  runPlayModeTestAsEditModeTest: 0
  actionOnDotNetUnhandledException: 1
  enableInternalProfiler: 0
  logObjCUncaughtExceptions: 1
  enableCrashReportAPI: 0
  cameraUsageDescription: 
  locationUsageDescription: 
  microphoneUsageDescription: 
  bluetoothUsageDescription: 
  switchNMETAOverride: 
  switchNetLibKey: 
  switchSocketMemoryPoolSize: 6144
  switchSocketAllocatorPoolSize: 128
  switchSocketConcurrencyLimit: 14
  switchScreenResolutionBehavior: 2
  switchUseCPUProfiler: 0
  switchUseGOLDLinker: 0
  switchLTOSetting: 0
  switchApplicationID: 0x01004b9000490000
  switchNSODependencies: 
  switchTitleNames_0: 
  switchTitleNames_1: 
  switchTitleNames_2: 
  switchTitleNames_3: 
  switchTitleNames_4: 
  switchTitleNames_5: 
  switchTitleNames_6: 
  switchTitleNames_7: 
  switchTitleNames_8: 
  switchTitleNames_9: 
  switchTitleNames_10: 
  switchTitleNames_11: 
  switchTitleNames_12: 
  switchTitleNames_13: 
  switchTitleNames_14: 
  switchTitleNames_15: 
  switchPublisherNames_0: 
  switchPublisherNames_1: 
  switchPublisherNames_2: 
  switchPublisherNames_3: 
  switchPublisherNames_4: 
  switchPublisherNames_5: 
  switchPublisherNames_6: 
  switchPublisherNames_7: 
  switchPublisherNames_8: 
  switchPublisherNames_9: 
  switchPublisherNames_10: 
  switchPublisherNames_11: 
  switchPublisherNames_12: 
  switchPublisherNames_13: 
  switchPublisherNames_14: 
  switchPublisherNames_15: 
  switchIcons_0: {fileID: 0}
  switchIcons_1: {fileID: 0}
  switchIcons_2: {fileID: 0}
  switchIcons_3: {fileID: 0}
  switchIcons_4: {fileID: 0}
  switchIcons_5: {fileID: 0}
  switchIcons_6: {fileID: 0}
  switchIcons_7: {fileID: 0}
  switchIcons_8: {fileID: 0}
  switchIcons_9: {fileID: 0}
  switchIcons_10: {fileID: 0}
  switchIcons_11: {fileID: 0}
  switchIcons_12: {fileID: 0}
  switchIcons_13: {fileID: 0}
  switchIcons_14: {fileID: 0}
  switchIcons_15: {fileID: 0}
  switchSmallIcons_0: {fileID: 0}
  switchSmallIcons_1: {fileID: 0}
  switchSmallIcons_2: {fileID: 0}
  switchSmallIcons_3: {fileID: 0}
  switchSmallIcons_4: {fileID: 0}
  switchSmallIcons_5: {fileID: 0}
  switchSmallIcons_6: {fileID: 0}
  switchSmallIcons_7: {fileID: 0}
  switchSmallIcons_8: {fileID: 0}
  switchSmallIcons_9: {fileID: 0}
  switchSmallIcons_10: {fileID: 0}
  switchSmallIcons_11: {fileID: 0}
  switchSmallIcons_12: {fileID: 0}
  switchSmallIcons_13: {fileID: 0}
  switchSmallIcons_14: {fileID: 0}
  switchSmallIcons_15: {fileID: 0}
  switchManualHTML: 
  switchAccessibleURLs: 
  switchLegalInformation: 
  switchMainThreadStackSize: 1048576
  switchPresenceGroupId: 
  switchLogoHandling: 0
  switchReleaseVersion: 0
  switchDisplayVersion: 1.0.0
  switchStartupUserAccount: 0
  switchTouchScreenUsage: 0
  switchSupportedLanguagesMask: 0
  switchLogoType: 0
  switchApplicationErrorCodeCategory: 
  switchUserAccountSaveDataSize: 0
  switchUserAccountSaveDataJournalSize: 0
  switchApplicationAttribute: 0
  switchCardSpecSize: -1
  switchCardSpecClock: -1
  switchRatingsMask: 0
  switchRatingsInt_0: 0
  switchRatingsInt_1: 0
  switchRatingsInt_2: 0
  switchRatingsInt_3: 0
  switchRatingsInt_4: 0
  switchRatingsInt_5: 0
  switchRatingsInt_6: 0
  switchRatingsInt_7: 0
  switchRatingsInt_8: 0
  switchRatingsInt_9: 0
  switchRatingsInt_10: 0
  switchRatingsInt_11: 0
  switchRatingsInt_12: 0
  switchLocalCommunicationIds_0: 
  switchLocalCommunicationIds_1: 
  switchLocalCommunicationIds_2: 
  switchLocalCommunicationIds_3: 
  switchLocalCommunicationIds_4: 
  switchLocalCommunicationIds_5: 
  switchLocalCommunicationIds_6: 
  switchLocalCommunicationIds_7: 
  switchParentalControl: 0
  switchAllowsScreenshot: 1
  switchAllowsVideoCapturing: 1
  switchAllowsRuntimeAddOnContentInstall: 0
  switchDataLossConfirmation: 0
  switchUserAccountLockEnabled: 0
  switchSystemResourceMemory: 16777216
  switchSupportedNpadStyles: 22
  switchNativeFsCacheSize: 32
  switchIsHoldTypeHorizontal: 0
  switchSupportedNpadCount: 8
  switchSocketConfigEnabled: 0
  switchTcpInitialSendBufferSize: 32
  switchTcpInitialReceiveBufferSize: 64
  switchTcpAutoSendBufferSizeMax: 256
  switchTcpAutoReceiveBufferSizeMax: 256
  switchUdpSendBufferSize: 9
  switchUdpReceiveBufferSize: 42
  switchSocketBufferEfficiency: 4
  switchSocketInitializeEnabled: 1
  switchNetworkInterfaceManagerInitializeEnabled: 1
  switchPlayerConnectionEnabled: 1
  switchUseNewStyleFilepaths: 0
  switchUseMicroSleepForYield: 1
  switchEnableRamDiskSupport: 0
  switchMicroSleepForYieldTime: 25
  switchRamDiskSpaceSize: 12
  ps4NPAgeRating: 12
  ps4NPTitleSecret: 
  ps4NPTrophyPackPath: 
  ps4ParentalLevel: 11
  ps4ContentID: ED1633-NPXX51362_00-0000000000000000
  ps4Category: 0
  ps4MasterVersion: 01.00
  ps4AppVersion: 01.00
  ps4AppType: 0
  ps4ParamSfxPath: 
  ps4VideoOutPixelFormat: 0
  ps4VideoOutInitialWidth: 1920
  ps4VideoOutBaseModeInitialWidth: 1920
  ps4VideoOutReprojectionRate: 60
  ps4PronunciationXMLPath: 
  ps4PronunciationSIGPath: 
  ps4BackgroundImagePath: 
  ps4StartupImagePath: 
  ps4StartupImagesFolder: 
  ps4IconImagesFolder: 
  ps4SaveDataImagePath: 
  ps4SdkOverride: 
  ps4BGMPath: 
  ps4ShareFilePath: 
  ps4ShareOverlayImagePath: 
  ps4PrivacyGuardImagePath: 
  ps4ExtraSceSysFile: 
  ps4NPtitleDatPath: 
  ps4RemotePlayKeyAssignment: -1
  ps4RemotePlayKeyMappingDir: 
  ps4PlayTogetherPlayerCount: 0
  ps4EnterButtonAssignment: 2
  ps4ApplicationParam1: 0
  ps4ApplicationParam2: 0
  ps4ApplicationParam3: 0
  ps4ApplicationParam4: 0
  ps4DownloadDataSize: 0
  ps4GarlicHeapSize: 2048
  ps4ProGarlicHeapSize: 2560
  playerPrefsMaxSize: 32768
  ps4Passcode: bi9UOuSpM2Tlh01vOzwvSikHFswuzleh
  ps4pnSessions: 1
  ps4pnPresence: 1
  ps4pnFriends: 1
  ps4pnGameCustomData: 1
  playerPrefsSupport: 0
  enableApplicationExit: 0
  resetTempFolder: 1
  restrictedAudioUsageRights: 0
  ps4UseResolutionFallback: 0
  ps4ReprojectionSupport: 0
  ps4UseAudio3dBackend: 0
  ps4UseLowGarlicFragmentationMode: 1
  ps4SocialScreenEnabled: 0
  ps4ScriptOptimizationLevel: 2
  ps4Audio3dVirtualSpeakerCount: 14
  ps4attribCpuUsage: 0
  ps4PatchPkgPath: 
  ps4PatchLatestPkgPath: 
  ps4PatchChangeinfoPath: 
  ps4PatchDayOne: 0
  ps4attribUserManagement: 0
  ps4attribMoveSupport: 0
  ps4attrib3DSupport: 0
  ps4attribShareSupport: 0
  ps4attribExclusiveVR: 0
  ps4disableAutoHideSplash: 0
  ps4videoRecordingFeaturesUsed: 0
  ps4contentSearchFeaturesUsed: 0
  ps4CompatibilityPS5: 0
  ps4GPU800MHz: 1
  ps4attribEyeToEyeDistanceSettingVR: 0
  ps4IncludedModules: []
  ps4attribVROutputEnabled: 0
  monoEnv: 
  splashScreenBackgroundSourceLandscape: {fileID: 0}
  splashScreenBackgroundSourcePortrait: {fileID: 0}
  blurSplashScreenBackground: 1
  spritePackerPolicy: 
  webGLMemorySize: 32
  webGLExceptionSupport: 1
  webGLNameFilesAsHashes: 0
  webGLDataCaching: 1
  webGLDebugSymbols: 0
  webGLEmscriptenArgs: 
  webGLModulesDirectory: 
  webGLTemplate: APPLICATION:Default
  webGLAnalyzeBuildSize: 0
  webGLUseEmbeddedResources: 0
  webGLCompressionFormat: 0
  webGLWasmArithmeticExceptions: 0
  webGLLinkerTarget: 1
  webGLThreadsSupport: 0
  webGLDecompressionFallback: 0
  scriptingDefineSymbols: {}
  additionalCompilerArguments: {}
  platformArchitecture: {}
  scriptingBackend: {}
  il2cppCompilerConfiguration: {}
  managedStrippingLevel: {}
  incrementalIl2cppBuild: {}
  suppressCommonWarnings: 1
  allowUnsafeCode: 0
  useDeterministicCompilation: 1
  enableRoslynAnalyzers: 1
  additionalIl2CppArgs: 
  scriptingRuntimeVersion: 1
  gcIncremental: 1
  assemblyVersionValidation: 1
  gcWBarrierValidation: 0
  apiCompatibilityLevelPerPlatform: {}
  m_RenderingPath: 1
  m_MobileRenderingPath: 1
  metroPackageName: 2D_BuiltInRenderer
  metroPackageVersion: 
  metroCertificatePath: 
  metroCertificatePassword: 
  metroCertificateSubject: 
  metroCertificateIssuer: 
  metroCertificateNotAfter: 0000000000000000
  metroApplicationDescription: 2D_BuiltInRenderer
  wsaImages: {}
  metroTileShortName: 
  metroTileShowName: 0
  metroMediumTileShowName: 0
  metroLargeTileShowName: 0
  metroWideTileShowName: 0
  metroSupportStreamingInstall: 0
  metroLastRequiredScene: 0
  metroDefaultTileSize: 1
  metroTileForegroundText: 2
  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
  metroSplashScreenUseBackgroundColor: 0
  platformCapabilities: {}
  metroTargetDeviceFamilies: {}
  metroFTAName: 
  metroFTAFileTypes: []
  metroProtocolName: 
  XboxOneProductId: 
  XboxOneUpdateKey: 
  XboxOneSandboxId: 
  XboxOneContentId: 
  XboxOneTitleId: 
  XboxOneSCId: 
  XboxOneGameOsOverridePath: 
  XboxOnePackagingOverridePath: 
  XboxOneAppManifestOverridePath: 
  XboxOneVersion: 1.0.0.0
  XboxOnePackageEncryption: 0
  XboxOnePackageUpdateGranularity: 2
  XboxOneDescription: 
  XboxOneLanguage:
  - enus
  XboxOneCapability: []
  XboxOneGameRating: {}
  XboxOneIsContentPackage: 0
  XboxOneEnhancedXboxCompatibilityMode: 0
  XboxOneEnableGPUVariability: 1
  XboxOneSockets: {}
  XboxOneSplashScreen: {fileID: 0}
  XboxOneAllowedProductIds: []
  XboxOnePersistentLocalStorageSize: 0
  XboxOneXTitleMemory: 8
  XboxOneOverrideIdentityName: 
  XboxOneOverrideIdentityPublisher: 
  vrEditorSettings: {}
  cloudServicesEnabled: {}
  luminIcon:
    m_Name: 
    m_ModelFolderPath: 
    m_PortalFolderPath: 
  luminCert:
    m_CertPath: 
    m_SignPackage: 1
  luminIsChannelApp: 0
  luminVersion:
    m_VersionCode: 1
    m_VersionName: 
  apiCompatibilityLevel: 6
  activeInputHandler: 0
  cloudProjectId: 
  framebufferDepthMemorylessMode: 0
  qualitySettingsNames: []
  projectName: 
  organizationId: 
  cloudEnabled: 0
  legacyClampBlendShapeWeights: 0
  playerDataPath: 
  forceSRGBBlit: 1
  virtualTexturingSupportEnabled: 0


================================================
FILE: dist/BlankProject/ProjectSettings/ProjectVersion.txt
================================================
m_EditorVersion: 2021.2.8f1
m_EditorVersionWithRevision: 2021.2.8f1 (d0e5f0a7b06a)


================================================
FILE: dist/BlankProject/ProjectSettings/QualitySettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!47 &1
QualitySettings:
  m_ObjectHideFlags: 0
  serializedVersion: 5
  m_CurrentQuality: 5
  m_QualitySettings:
  - serializedVersion: 2
    name: Very Low
    pixelLightCount: 0
    shadows: 0
    shadowResolution: 0
    shadowProjection: 1
    shadowCascades: 1
    shadowDistance: 15
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 0
    skinWeights: 1
    textureQuality: 1
    anisotropicTextures: 0
    antiAliasing: 0
    softParticles: 0
    softVegetation: 0
    realtimeReflectionProbes: 0
    billboardsFaceCameraPosition: 0
    vSyncCount: 0
    lodBias: 0.3
    maximumLODLevel: 0
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 4
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    excludedTargetPlatforms: []
  - serializedVersion: 2
    name: Low
    pixelLightCount: 0
    shadows: 0
    shadowResolution: 0
    shadowProjection: 1
    shadowCascades: 1
    shadowDistance: 20
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 0
    skinWeights: 2
    textureQuality: 0
    anisotropicTextures: 0
    antiAliasing: 0
    softParticles: 0
    softVegetation: 0
    realtimeReflectionProbes: 0
    billboardsFaceCameraPosition: 0
    vSyncCount: 0
    lodBias: 0.4
    maximumLODLevel: 0
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 16
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    excludedTargetPlatforms: []
  - serializedVersion: 2
    name: Medium
    pixelLightCount: 1
    shadows: 1
    shadowResolution: 0
    shadowProjection: 1
    shadowCascades: 1
    shadowDistance: 20
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 0
    skinWeights: 2
    textureQuality: 0
    anisotropicTextures: 1
    antiAliasing: 0
    softParticles: 0
    softVegetation: 0
    realtimeReflectionProbes: 0
    billboardsFaceCameraPosition: 0
    vSyncCount: 1
    lodBias: 0.7
    maximumLODLevel: 0
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 64
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    excludedTargetPlatforms: []
  - serializedVersion: 2
    name: High
    pixelLightCount: 2
    shadows: 2
    shadowResolution: 1
    shadowProjection: 1
    shadowCascades: 2
    shadowDistance: 40
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 1
    skinWeights: 2
    textureQuality: 0
    anisotropicTextures: 1
    antiAliasing: 0
    softParticles: 0
    softVegetation: 1
    realtimeReflectionProbes: 1
    billboardsFaceCameraPosition: 1
    vSyncCount: 1
    lodBias: 1
    maximumLODLevel: 0
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 256
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    excludedTargetPlatforms: []
  - serializedVersion: 2
    name: Very High
    pixelLightCount: 3
    shadows: 2
    shadowResolution: 2
    shadowProjection: 1
    shadowCascades: 2
    shadowDistance: 70
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 1
    skinWeights: 4
    textureQuality: 0
    anisotropicTextures: 2
    antiAliasing: 2
    softParticles: 1
    softVegetation: 1
    realtimeReflectionProbes: 1
    billboardsFaceCameraPosition: 1
    vSyncCount: 1
    lodBias: 1.5
    maximumLODLevel: 0
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 1024
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    excludedTargetPlatforms: []
  - serializedVersion: 2
    name: Ultra
    pixelLightCount: 4
    shadows: 2
    shadowResolution: 2
    shadowProjection: 1
    shadowCascades: 4
    shadowDistance: 150
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 1
    skinWeights: 255
    textureQuality: 0
    anisotropicTextures: 2
    antiAliasing: 2
    softParticles: 1
    softVegetation: 1
    realtimeReflectionProbes: 1
    billboardsFaceCameraPosition: 1
    vSyncCount: 1
    lodBias: 2
    maximumLODLevel: 0
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 4096
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    excludedTargetPlatforms: []
  m_PerPlatformDefaultQuality:
    Android: 2
    Lumin: 5
    Nintendo Switch: 5
    PS4: 5
    Stadia: 5
    Standalone: 5
    WebGL: 3
    Windows Store Apps: 5
    XboxOne: 5
    iPhone: 2
    tvOS: 2


================================================
FILE: dist/BlankProject/ProjectSettings/TagManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
  serializedVersion: 2
  tags: []
  layers:
  - Default
  - TransparentFX
  - Ignore Raycast
  - 
  - Water
  - UI
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  m_SortingLayers:
  - name: Default
    uniqueID: 0
    locked: 0


================================================
FILE: dist/BlankProject/ProjectSettings/TimeManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!5 &1
TimeManager:
  m_ObjectHideFlags: 0
  Fixed Timestep: 0.02
  Maximum Allowed Timestep: 0.33333334
  m_TimeScale: 1
  Maximum Particle Timestep: 0.03


================================================
FILE: dist/BlankProject/ProjectSettings/UnityConnectSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!310 &1
UnityConnectSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 1
  m_Enabled: 0
  m_TestMode: 0
  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
  m_ConfigUrl: https://config.uca.cloud.unity3d.com
  m_DashboardUrl: https://dashboard.unity3d.com
  m_TestInitMode: 0
  CrashReportingSettings:
    m_EventUrl: https://perf-events.cloud.unity3d.com
    m_Enabled: 0
    m_LogBufferSize: 10
    m_CaptureEditorExceptions: 1
  UnityPurchasingSettings:
    m_Enabled: 0
    m_TestMode: 0
  UnityAnalyticsSettings:
    m_Enabled: 0
    m_TestMode: 0
    m_InitializeOnStartup: 1
  UnityAdsSettings:
    m_Enabled: 0
    m_InitializeOnStartup: 1
    m_TestMode: 0
    m_IosGameId: 
    m_AndroidGameId: 
    m_GameIds: {}
    m_GameId: 
  PerformanceReportingSettings:
    m_Enabled: 0


================================================
FILE: dist/BlankProject/ProjectSettings/VFXManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!937362698 &1
VFXManager:
  m_ObjectHideFlags: 0
  m_IndirectShader: {fileID: 0}
  m_CopyBufferShader: {fileID: 0}
  m_SortShader: {fileID: 0}
  m_StripUpdateShader: {fileID: 0}
  m_RenderPipeSettingsPath: 
  m_FixedTimeStep: 0.016666668
  m_MaxDeltaTime: 0.05
  m_CompiledVersion: 0
  m_RuntimeVersion: 0


================================================
FILE: dist/BlankProject/ProjectSettings/VersionControlSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!890905787 &1
VersionControlSettings:
  m_ObjectHideFlags: 0
  m_Mode: Visible Meta Files
  m_CollabEditorSettings:
    inProgressEnabled: 1


================================================
FILE: dist/BlankProject/ProjectSettings/boot.config
================================================


================================================
FILE: dist/index.js
================================================
require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ 3109:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.run = run;
const core = __importStar(__nccwpck_require__(2186));
const model_1 = __nccwpck_require__(1359);
async function run() {
    try {
        model_1.Action.checkCompatibility();
        const { workspace, actionFolder } = model_1.Action;
        const { editorVersion, customImage, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, sshPublicKeysDirectoryPath, gitPrivateToken, githubToken, checkName, packageMode, packageName, scopedRegistryUrl, registryScopes, chownFilesTo, dockerCpuLimit, dockerMemoryLimit, dockerIsolationMode, unityLicensingServer, runAsHostUser, containerRegistryRepository, containerRegistryImageVersion, unitySerial, } = model_1.Input.getFromUser();
        const baseImage = new model_1.ImageTag({
            editorVersion,
            customImage,
            containerRegistryRepository,
            containerRegistryImageVersion,
        });
        const runnerContext = model_1.Action.runnerContext();
        try {
            await model_1.Docker.run(baseImage, {
                actionFolder,
                editorVersion,
                workspace,
                projectPath,
                customParameters,
                testMode,
                coverageOptions,
                artifactsPath,
                useHostNetwork,
                sshAgent,
                sshPublicKeysDirectoryPath,
                packageMode,
                packageName,
                scopedRegistryUrl,
                registryScopes,
                gitPrivateToken,
                githubToken,
                chownFilesTo,
                dockerCpuLimit,
                dockerMemoryLimit,
                dockerIsolationMode,
                unityLicensingServer,
                runAsHostUser,
                unitySerial,
                ...runnerContext,
            });
        }
        finally {
            await model_1.Output.setArtifactsPath(artifactsPath);
            await model_1.Output.setCoveragePath('CodeCoverage');
        }
        if (githubToken) {
            const failedTestCount = await model_1.ResultsCheck.createCheck(artifactsPath, githubToken, checkName);
            if (failedTestCount >= 1) {
                core.setFailed(`Test(s) Failed! Check '${checkName}' for details.`);
            }
        }
    }
    catch (error) {
        core.setFailed(error.message);
    }
}


/***/ }),

/***/ 9088:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const path_1 = __importDefault(__nccwpck_require__(1017));
const Action = {
    get supportedPlatforms() {
        return ['linux', 'win32'];
    },
    get isRunningLocally() {
        return process.env.RUNNER_WORKSPACE === undefined;
    },
    get isRunningFromSource() {
        return path_1.default.basename(__dirname) === 'model';
    },
    get canonicalName() {
        return 'unity-test-runner';
    },
    get rootFolder() {
        if (Action.isRunningFromSource) {
            return path_1.default.dirname(path_1.default.dirname(path_1.default.dirname(__filename)));
        }
        return path_1.default.dirname(path_1.default.dirname(__filename));
    },
    get actionFolder() {
        return `${Action.rootFolder}/dist`;
    },
    get workspace() {
        return process.env.GITHUB_WORKSPACE;
    },
    runnerContext() {
        const runnerTemporaryPath = process.env.RUNNER_TEMP ?? process.cwd();
        const githubAction = process.env.GITHUB_ACTION ?? process.pid.toString();
        return {
            runnerTemporaryPath,
            githubAction,
        };
    },
    checkCompatibility() {
        const currentPlatform = process.platform;
        if (!Action.supportedPlatforms.includes(currentPlatform)) {
            throw new Error(`Currently ${currentPlatform}-platform is not supported`);
        }
    },
};
exports["default"] = Action;


/***/ }),

/***/ 6934:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const image_environment_factory_1 = __importDefault(__nccwpck_require__(5145));
const fs_1 = __nccwpck_require__(7147);
const licensing_server_setup_1 = __importDefault(__nccwpck_require__(6089));
const exec_1 = __nccwpck_require__(1514);
const path_1 = __importDefault(__nccwpck_require__(1017));
/**
 * Build a path for a docker --cidfile parameter. Docker will store the the created container.
 * This path is stable for the whole execution of the action, so it can be executed with the same parameters
 * multiple times and get the same result.
 */
const containerIdFilePath = (parameters) => {
    const { runnerTemporaryPath, githubAction } = parameters;
    return path_1.default.join(runnerTemporaryPath, `container_${githubAction}`);
};
const Docker = {
    /**
     *  Remove a possible leftover container created by `Docker.run`.
     */
    async ensureContainerRemoval(parameters) {
        const cidfile = containerIdFilePath(parameters);
        if (!(0, fs_1.existsSync)(cidfile)) {
            return;
        }
        const container = (0, fs_1.readFileSync)(cidfile, 'ascii').trim();
        await (0, exec_1.exec)(`docker`, ['rm', '--force', '--volumes', container], { silent: true });
        (0, fs_1.rmSync)(cidfile);
    },
    async run(image, parameters, silent = false) {
        let runCommand = '';
        if (parameters.unityLicensingServer !== '') {
            licensing_server_setup_1.default.Setup(parameters.unityLicensingServer, parameters.actionFolder);
        }
        switch (process.platform) {
            case 'linux':
                runCommand = this.getLinuxCommand(image, parameters);
                break;
            case 'win32':
                runCommand = this.getWindowsCommand(image, parameters);
                break;
            default:
                throw new Error(`Operation system, ${process.platform}, is not supported yet.`);
        }
        await (0, exec_1.exec)(runCommand, undefined, { silent });
    },
    getLinuxCommand(image, parameters) {
        const { actionFolder, workspace, testMode, useHostNetwork, sshAgent, sshPublicKeysDirectoryPath, githubToken, runnerTemporaryPath, dockerCpuLimit, dockerMemoryLimit, } = parameters;
        const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
        if (!(0, fs_1.existsSync)(githubHome))
            (0, fs_1.mkdirSync)(githubHome);
        const githubWorkflow = path_1.default.join(runnerTemporaryPath, '_github_workflow');
        if (!(0, fs_1.existsSync)(githubWorkflow))
            (0, fs_1.mkdirSync)(githubWorkflow);
        const cidfile = containerIdFilePath(parameters);
        const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
        return `docker run \
            --workdir /github/workspace \
            --cidfile "${cidfile}" \
            --rm \
            ${image_environment_factory_1.default.getEnvVarString(parameters)} \
            --env GIT_CONFIG_EXTENSIONS \
            --env TEST_PLATFORMS="${testPlatforms}" \
            --env GITHUB_WORKSPACE="/github/workspace" \
            ${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
            --volume "${githubHome}:/root:z" \
            --volume "${githubWorkflow}:/github/workflow:z" \
            --volume "${workspace}:/github/workspace:z" \
            --volume "${actionFolder}/test-standalone-scripts:/UnityStandaloneScripts:z" \
            --volume "${actionFolder}/platforms/ubuntu:/steps:z" \
            --volume "${actionFolder}/unity-config:/usr/share/unity3d/config/:z" \
            --volume "${actionFolder}/BlankProject":"/BlankProject:z" \
            --cpus=${dockerCpuLimit} \
            --memory=${dockerMemoryLimit} \
            ${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
            ${sshAgent && !sshPublicKeysDirectoryPath
            ? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro`
            : ''} \
            ${sshPublicKeysDirectoryPath
            ? `--volume ${sshPublicKeysDirectoryPath}:/root/.ssh:ro`
            : ''} \
            ${useHostNetwork ? '--net=host' : ''} \
            ${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
            ${image} \
            /bin/bash -c "/steps/entrypoint.sh`;
    },
    getWindowsCommand(image, parameters) {
        const { actionFolder, workspace, testMode, useHostNetwork, sshAgent, githubToken, runnerTemporaryPath, dockerCpuLimit, dockerMemoryLimit, dockerIsolationMode, } = parameters;
        const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
        if (!(0, fs_1.existsSync)(githubHome))
            (0, fs_1.mkdirSync)(githubHome);
        const cidfile = containerIdFilePath(parameters);
        const githubWorkflow = path_1.default.join(runnerTemporaryPath, '_github_workflow');
        if (!(0, fs_1.existsSync)(githubWorkflow))
            (0, fs_1.mkdirSync)(githubWorkflow);
        const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
        return `docker run \
                --workdir c:/github/workspace \
                --cidfile "${cidfile}" \
                --rm \
                ${image_environment_factory_1.default.getEnvVarString(parameters)} \
                --env TEST_PLATFORMS="${testPlatforms}" \
                --env GITHUB_WORKSPACE="c:/github/workspace" \
                ${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
                --volume "${actionFolder}/test-standalone-scripts":"c:/UnityStandaloneScripts" \
                --volume "${githubHome}":"c:/root" \
                --volume "${githubWorkflow}":"c:/github/workflow" \
                --volume "${workspace}":"c:/github/workspace" \
                --volume "${actionFolder}/platforms/windows":"c:/steps" \
                --volume "${actionFolder}/BlankProject":"c:/BlankProject" \
                ${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
                ${sshAgent
            ? `--volume c:/Users/Administrator/.ssh/known_hosts:c:/root/.ssh/known_hosts`
            : ''} \
                --cpus=${dockerCpuLimit} \
                --memory=${dockerMemoryLimit} \
                --isolation=${dockerIsolationMode} \
                ${useHostNetwork ? '--net=host' : ''} \
                ${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
                ${image} \
                powershell c:/steps/entrypoint.ps1`;
    },
};
exports["default"] = Docker;


/***/ }),

/***/ 5145:
/***/ ((__unused_webpack_module, exports) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
class ImageEnvironmentFactory {
    static getEnvVarString(parameters) {
        const environmentVariables = ImageEnvironmentFactory.getEnvironmentVariables(parameters);
        let string = '';
        for (const p of environmentVariables) {
            if (p.value === '' || p.value === undefined) {
                continue;
            }
            if (p.name !== 'ANDROID_KEYSTORE_BASE64' && p.value.toString().includes(`\n`)) {
                string += `--env ${p.name} `;
                process.env[p.name] = p.value.toString();
                continue;
            }
            string += `--env ${p.name}="${p.value}" `;
        }
        return string;
    }
    static getEnvironmentVariables(parameters) {
        let environmentVariables = [
            { name: 'UNITY_EMAIL', value: process.env.UNITY_EMAIL },
            { name: 'UNITY_PASSWORD', value: process.env.UNITY_PASSWORD },
            { name: 'UNITY_SERIAL', value: parameters.unitySerial },
            {
                name: 'UNITY_LICENSING_SERVER',
                value: parameters.unityLicensingServer,
            },
            { name: 'UNITY_VERSION', value: parameters.editorVersion },
            {
                name: 'USYM_UPLOAD_AUTH_TOKEN',
                value: process.env.USYM_UPLOAD_AUTH_TOKEN,
            },
            { name: 'PROJECT_PATH', value: parameters.projectPath },
            { name: 'COVERAGE_OPTIONS', value: parameters.coverageOptions },
            { name: 'COVERAGE_RESULTS_PATH', value: 'CodeCoverage' },
            { name: 'ARTIFACTS_PATH', value: parameters.artifactsPath },
            { name: 'PACKAGE_MODE', value: parameters.packageMode },
            { name: 'PACKAGE_NAME', value: parameters.packageName },
            { name: 'SCOPED_REGISTRY_URL', value: parameters.scopedRegistryUrl },
            { name: 'REGISTRY_SCOPES', value: parameters.registryScopes },
            { name: 'PRIVATE_REGISTRY_TOKEN', value: process.env.UPM_REGISTRY_TOKEN },
            { name: 'PRIVATE_REGISTRY_USER', value: process.env.UPM_REGISTRY_USER },
            { name: 'GIT_PRIVATE_TOKEN', value: parameters.gitPrivateToken },
            { name: 'VERSION', value: parameters.buildVersion },
            { name: 'CUSTOM_PARAMETERS', value: parameters.customParameters },
            { name: 'RUN_AS_HOST_USER', value: parameters.runAsHostUser },
            { name: 'CHOWN_FILES_TO', value: parameters.chownFilesTo },
            { name: 'GITHUB_REF', value: process.env.GITHUB_REF },
            { name: 'GITHUB_SHA', value: process.env.GITHUB_SHA },
            { name: 'GITHUB_REPOSITORY', value: process.env.GITHUB_REPOSITORY },
            { name: 'GITHUB_ACTOR', value: process.env.GITHUB_ACTOR },
            { name: 'GITHUB_WORKFLOW', value: process.env.GITHUB_WORKFLOW },
            { name: 'GITHUB_HEAD_REF', value: process.env.GITHUB_HEAD_REF },
            { name: 'GITHUB_BASE_REF', value: process.env.GITHUB_BASE_REF },
            { name: 'GITHUB_EVENT_NAME', value: process.env.GITHUB_EVENT_NAME },
            { name: 'GITHUB_ACTION', value: process.env.GITHUB_ACTION },
            { name: 'GITHUB_EVENT_PATH', value: process.env.GITHUB_EVENT_PATH },
            { name: 'RUNNER_OS', value: process.env.RUNNER_OS },
            { name: 'RUNNER_TOOL_CACHE', value: process.env.RUNNER_TOOL_CACHE },
            { name: 'RUNNER_TEMP', value: process.env.RUNNER_TEMP },
            { name: 'RUNNER_WORKSPACE', value: process.env.RUNNER_WORKSPACE },
        ];
        for (const variable of environmentVariables) {
            if (environmentVariables.some((x) => variable !== undefined && variable.name !== undefined && x.name === variable.name) === undefined) {
                environmentVariables = environmentVariables.filter((x) => x !== variable);
            }
        }
        if (parameters.sshAgent) {
            environmentVariables.push({ name: 'SSH_AUTH_SOCK', value: '/ssh-agent' });
        }
        return environmentVariables;
    }
}
exports["default"] = ImageEnvironmentFactory;


/***/ }),

/***/ 7648:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const platform_1 = __importDefault(__nccwpck_require__(9707));
class ImageTag {
    customImage;
    repository;
    editorVersion;
    targetPlatform;
    targetPlatformSuffix;
    imagePlatformPrefix;
    imageRollingVersion;
    constructor(imageProperties) {
        const { editorVersion = '2022.3.7f1', targetPlatform = ImageTag.getImagePlatformType(process.platform), customImage, containerRegistryRepository, containerRegistryImageVersion, } = imageProperties;
        if (!ImageTag.versionPattern.test(editorVersion)) {
            throw new Error(`Invalid version "${editorVersion}".`);
        }
        // Either
        this.customImage = customImage;
        // Or
        this.repository = containerRegistryRepository;
        this.editorVersion = editorVersion;
        this.targetPlatform = targetPlatform;
        this.targetPlatformSuffix = ImageTag.getTargetPlatformSuffix(targetPlatform, editorVersion);
        this.imagePlatformPrefix = ImageTag.getImagePlatformPrefix(process.platform);
        this.imageRollingVersion = Number(containerRegistryImageVersion);
    }
    static get versionPattern() {
        return /^\d+\.\d+\.\d+[a-z]\d+$/;
    }
    static get targetPlatformSuffixes() {
        return {
            generic: '',
            webgl: 'webgl',
            mac: 'mac-mono',
            windows: 'windows-il2cpp',
            linux: 'base',
            linuxIl2cpp: 'linux-il2cpp',
            android: 'android',
            ios: 'ios',
            facebook: 'facebook',
        };
    }
    static getImagePlatformPrefix(platform) {
        switch (platform) {
            case 'linux':
                return 'ubuntu';
            case 'win32':
                return 'windows';
            default:
                throw new Error(`The Operating System of this runner, "${platform}", is not yet supported.`);
        }
    }
    static getImagePlatformType(platform) {
        switch (platform) {
            case 'linux':
                return platform_1.default.types.StandaloneLinux64;
            case 'win32':
                return platform_1.default.types.StandaloneWindows;
            default:
                throw new Error(`The Operating System of this runner, "${platform}", is not yet supported.`);
        }
    }
    static getTargetPlatformSuffix(targetPlatform, editorVersion) {
        const { generic, webgl, mac, windows, linux, linuxIl2cpp, android, ios, facebook } = ImageTag.targetPlatformSuffixes;
        const [major, minor] = editorVersion.split('.').map((digit) => Number(digit));
        // @see: https://docs.unity3d.com/ScriptReference/BuildTarget.html
        switch (targetPlatform) {
            case platform_1.default.types.StandaloneOSX:
                return mac;
            case platform_1.default.types.StandaloneWindows:
                return windows;
            case platform_1.default.types.StandaloneWindows64:
                return windows;
            case platform_1.default.types.StandaloneLinux64: {
                // Unity versions before 2019.3 do not support il2cpp
                if (major >= 2020 || (major === 2019 && minor >= 3)) {
                    return linuxIl2cpp;
                }
                return linux;
            }
            case platform_1.default.types.iOS:
                return ios;
            case platform_1.default.types.Android:
                return android;
            case platform_1.default.types.WebGL:
                return webgl;
            case platform_1.default.types.WSAPlayer:
                return windows;
            case platform_1.default.types.PS4:
                return windows;
            case platform_1.default.types.XboxOne:
                return windows;
            case platform_1.default.types.tvOS:
                return windows;
            case platform_1.default.types.Switch:
                return windows;
            // Unsupported
            case platform_1.default.types.Lumin:
                return windows;
            case platform_1.default.types.BJM:
                return windows;
            case platform_1.default.types.Stadia:
                return windows;
            case platform_1.default.types.Facebook:
                return facebook;
            case platform_1.default.types.NoTarget:
                return generic;
            // Test specific
            case platform_1.default.types.Test:
                return generic;
            default:
                throw new Error(`
          Platform must be one of the ones described in the documentation.
          "${targetPlatform}" is currently not supported.`);
        }
    }
    get tag() {
        const versionAndTarget = `${this.editorVersion}-${this.targetPlatformSuffix}`.replace(/-+$/, '');
        return `${this.imagePlatformPrefix}-${versionAndTarget}-${this.imageRollingVersion}`;
    }
    get image() {
        return `${this.repository}`.replace(/^\/+/, '');
    }
    toString() {
        const { image, tag, customImage } = this;
        if (customImage)
            return customImage;
        return `${image}:${tag}`;
    }
}
exports["default"] = ImageTag;


/***/ }),

/***/ 1359:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ResultsCheck = exports.Output = exports.Input = exports.ImageTag = exports.Docker = exports.Action = void 0;
var action_1 = __nccwpck_require__(9088);
Object.defineProperty(exports, "Action", ({ enumerable: true, get: function () { return __importDefault(action_1).default; } }));
var docker_1 = __nccwpck_require__(6934);
Object.defineProperty(exports, "Docker", ({ enumerable: true, get: function () { return __importDefault(docker_1).default; } }));
var image_tag_1 = __nccwpck_require__(7648);
Object.defineProperty(exports, "ImageTag", ({ enumerable: true, get: function () { return __importDefault(image_tag_1).default; } }));
var input_1 = __nccwpck_require__(1933);
Object.defineProperty(exports, "Input", ({ enumerable: true, get: function () { return __importDefault(input_1).default; } }));
var output_1 = __nccwpck_require__(5487);
Object.defineProperty(exports, "Output", ({ enumerable: true, get: function () { return __importDefault(output_1).default; } }));
var results_check_1 = __nccwpck_require__(9183);
Object.defineProperty(exports, "ResultsCheck", ({ enumerable: true, get: function () { return __importDefault(results_check_1).default; } }));


/***/ }),

/***/ 1933:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const unity_version_parser_1 = __importDefault(__nccwpck_require__(7049));
const fs_1 = __importDefault(__nccwpck_require__(7147));
const core_1 = __nccwpck_require__(2186);
const os_1 = __importDefault(__nccwpck_require__(2037));
const core = __importStar(__nccwpck_require__(2186));
class Input {
    static get testModes() {
        return ['all', 'playmode', 'editmode', 'standalone'];
    }
    static isValidFolderName(folderName) {
        const validFolderName = new RegExp(/^(\.|\.\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
        return validFolderName.test(folderName);
    }
    static isValidGlobalFolderName(folderName) {
        const validFolderName = new RegExp(/^(\.|\.\/|\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
        return validFolderName.test(folderName);
    }
    /**
     * When in package mode, we need to scrape the package's name from its package.json file
     */
    static getPackageNameFromPackageJson(packagePath) {
        const packageJsonPath = `${packagePath}/package.json`;
        if (!fs_1.default.existsSync(packageJsonPath)) {
            throw new Error(`Invalid projectPath - Cannot find package.json at ${packageJsonPath}`);
        }
        let packageJson;
        try {
            packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath).toString());
        }
        catch (error) {
            if (error instanceof SyntaxError) {
                throw new SyntaxError(`Unable to parse package.json contents as JSON - ${error.message}`);
            }
            throw new Error(`Unable to parse package.json contents as JSON - unknown error ocurred`);
        }
        const rawPackageName = packageJson.name;
        if (typeof rawPackageName !== 'string') {
            throw new TypeError(`Unable to parse package name from package.json - package name should be string, but was ${typeof rawPackageName}`);
        }
        if (rawPackageName.length === 0) {
            throw new Error(`Package name from package.json is a string, but is empty`);
        }
        return rawPackageName;
    }
    static getSerialFromLicenseFile(license) {
        const startKey = `<DeveloperData Value="`;
        const endKey = `"/>`;
        const startIndex = license.indexOf(startKey) + startKey.length;
        if (startIndex < 0) {
            throw new Error(`License File was corrupted, unable to locate serial`);
        }
        const endIndex = license.indexOf(endKey, startIndex);
        // Slice off the first 4 characters as they are garbage values
        return Buffer.from(license.slice(startIndex, endIndex), 'base64').toString('binary').slice(4);
    }
    /**
     * When in package mode, we need to ensure that the Tests folder is present
     */
    static verifyTestsFolderIsPresent(packagePath) {
        if (!fs_1.default.existsSync(`${packagePath}/Tests`)) {
            throw new Error(`Invalid projectPath - Cannot find package tests folder at ${packagePath}/Tests`);
        }
    }
    static getFromUser() {
        // Input variables specified in workflow using "with" prop.
        const unityVersion = (0, core_1.getInput)('unityVersion') || 'auto';
        const customImage = (0, core_1.getInput)('customImage') || '';
        const rawProjectPath = (0, core_1.getInput)('projectPath') || '.';
        const unityLicensingServer = (0, core_1.getInput)('unityLicensingServer') || '';
        const unityLicense = (0, core_1.getInput)('unityLicense') || (process.env['UNITY_LICENSE'] ?? '');
        let unitySerial = process.env['UNITY_SERIAL'] ?? '';
        const customParameters = (0, core_1.getInput)('customParameters') || '';
        const testMode = ((0, core_1.getInput)('testMode') || 'all').toLowerCase();
        const coverageOptions = (0, core_1.getInput)('coverageOptions') || '';
        const rawArtifactsPath = (0, core_1.getInput)('artifactsPath') || 'artifacts';
        const rawUseHostNetwork = (0, core_1.getInput)('useHostNetwork') || 'false';
        const sshAgent = (0, core_1.getInput)('sshAgent') || '';
        const rawSshPublicKeysDirectoryPath = (0, core_1.getInput)('sshPublicKeysDirectoryPath') || '';
        const gitPrivateToken = (0, core_1.getInput)('gitPrivateToken') || '';
        const githubToken = (0, core_1.getInput)('githubToken') || '';
        const checkName = (0, core_1.getInput)('checkName') || 'Test Results';
        const rawPackageMode = (0, core_1.getInput)('packageMode') || 'false';
        let packageName = '';
        const scopedRegistryUrl = (0, core_1.getInput)('scopedRegistryUrl') || '';
        const rawScopes = (0, core_1.getInput)('registryScopes') || '';
        let registryScopes = [];
        const chownFilesTo = (0, core_1.getInput)('chownFilesTo') || '';
        const dockerCpuLimit = (0, core_1.getInput)('dockerCpuLimit') || os_1.default.cpus().length.toString();
        const bytesInMegabyte = 1024 * 1024;
        let memoryMultiplier;
        switch (os_1.default.platform()) {
            case 'linux':
                memoryMultiplier = 0.95;
                break;
            case 'win32':
                memoryMultiplier = 0.8;
                break;
            default:
                memoryMultiplier = 0.75;
                break;
        }
        const dockerMemoryLimit = (0, core_1.getInput)('dockerMemoryLimit') ||
            `${Math.floor((os_1.default.totalmem() / bytesInMegabyte) * memoryMultiplier)}m`;
        const dockerIsolationMode = (0, core_1.getInput)('dockerIsolationMode') || 'default';
        const runAsHostUser = (0, core_1.getInput)('runAsHostUser') || 'false';
        const containerRegistryRepository = (0, core_1.getInput)('containerRegistryRepository') || 'unityci/editor';
        const containerRegistryImageVersion = (0, core_1.getInput)('containerRegistryImageVersion') || '3';
        // Validate input
        if (!this.testModes.includes(testMode)) {
            throw new Error(`Invalid testMode ${testMode}`);
        }
        if (!this.isValidFolderName(rawProjectPath)) {
            throw new Error(`Invalid projectPath "${rawProjectPath}"`);
        }
        if (!this.isValidFolderName(rawArtifactsPath)) {
            throw new Error(`Invalid artifactsPath "${rawArtifactsPath}"`);
        }
        if (!this.isValidGlobalFolderName(rawSshPublicKeysDirectoryPath)) {
            throw new Error(`Invalid sshPublicKeysDirectoryPath "${rawSshPublicKeysDirectoryPath}"`);
        }
        if (rawUseHostNetwork !== 'true' && rawUseHostNetwork !== 'false') {
            throw new Error(`Invalid useHostNetwork "${rawUseHostNetwork}"`);
        }
        if (rawPackageMode !== 'true' && rawPackageMode !== 'false') {
            throw new Error(`Invalid packageMode "${rawPackageMode}"`);
        }
        if (rawSshPublicKeysDirectoryPath !== '' && sshAgent === '') {
            throw new Error('sshPublicKeysDirectoryPath is set, but sshAgent is not set. sshPublicKeysDirectoryPath is useful only when using sshAgent.');
        }
        // sanitize packageMode input and projectPath input since they are needed
        // for input validation
        const packageMode = rawPackageMode === 'true';
        const projectPath = rawProjectPath.replace(/\/$/, '');
        // if in package mode, attempt to get the package's name, and ensure tests are present
        if (packageMode) {
            if (unityVersion === 'auto') {
                throw new Error('Package Mode is enabled, but unityVersion is set to "auto". unityVersion must manually be set in Package Mode.');
            }
            packageName = this.getPackageNameFromPackageJson(projectPath);
            this.verifyTestsFolderIsPresent(projectPath);
            if (scopedRegistryUrl !== '') {
                if (rawScopes === '') {
                    throw new Error('Scoped registry is set, but registryScopes is not set. registryScopes is required when using scopedRegistryUrl.');
                }
                registryScopes = rawScopes.split(',').map((scope) => scope.trim());
            }
        }
        if (runAsHostUser !== 'true' && runAsHostUser !== 'false') {
            throw new Error(`Invalid runAsHostUser "${runAsHostUser}"`);
        }
        if (unityLicensingServer === '' && !unitySerial) {
            // No serial was present, so it is a personal license that we need to convert
            if (!unityLicense) {
                throw new Error(`Missing Unity License File and no Serial was found. If this
                            is a personal license, make sure to follow the activation
                            steps and set the UNITY_LICENSE GitHub secret or enter a Unity
                            serial number inside the UNITY_SERIAL GitHub secret.`);
            }
            unitySerial = this.getSerialFromLicenseFile(unityLicense);
        }
        if (unitySerial !== undefined && unitySerial.length === 27) {
            core.setSecret(unitySerial);
            core.setSecret(`${unitySerial.slice(0, -4)}XXXX`);
        }
        // Sanitise other input
        const artifactsPath = rawArtifactsPath.replace(/\/$/, '');
        const sshPublicKeysDirectoryPath = rawSshPublicKeysDirectoryPath.replace(/\/$/, '');
        const useHostNetwork = rawUseHostNetwork === 'true';
        const editorVersion = unityVersion === 'auto' ? unity_version_parser_1.default.read(projectPath) : unityVersion;
        // Return sanitised input
        return {
            editorVersion,
            customImage,
            projectPath,
            customParameters,
            testMode,
            coverageOptions,
            artifactsPath,
            useHostNetwork,
            sshAgent,
            sshPublicKeysDirectoryPath,
            gitPrivateToken,
            githubToken,
            checkName,
            packageMode,
            packageName,
            scopedRegistryUrl,
            registryScopes,
            chownFilesTo,
            dockerCpuLimit,
            dockerMemoryLimit,
            dockerIsolationMode,
            unityLicensingServer,
            runAsHostUser,
            containerRegistryRepository,
            containerRegistryImageVersion,
            unitySerial,
        };
    }
}
exports["default"] = Input;


/***/ }),

/***/ 6089:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const core = __importStar(__nccwpck_require__(2186));
const fs_1 = __importDefault(__nccwpck_require__(7147));
class LicensingServerSetup {
    static Setup(unityLicensingServer, actionFolder) {
        const servicesConfigPath = `${actionFolder}/unity-config/services-config.json`;
        const servicesConfigPathTemplate = `${servicesConfigPath}.template`;
        if (!fs_1.default.existsSync(servicesConfigPathTemplate)) {
            core.error(`Missing services config ${servicesConfigPathTemplate}`);
            return;
        }
        let servicesConfig = fs_1.default.readFileSync(servicesConfigPathTemplate).toString();
        servicesConfig = servicesConfig.replace('%URL%', unityLicensingServer);
        fs_1.default.writeFileSync(servicesConfigPath, servicesConfig);
    }
}
exports["default"] = LicensingServerSetup;


/***/ }),

/***/ 5487:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
const core = __importStar(__nccwpck_require__(2186));
const Output = {
    async setArtifactsPath(artifactsPath) {
        await core.setOutput('artifactsPath', artifactsPath);
    },
    async setCoveragePath(coveragePath) {
        await core.setOutput('coveragePath', coveragePath);
    },
};
exports["default"] = Output;


/***/ }),

/***/ 9707:
/***/ ((__unused_webpack_module, exports) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
const Platform = {
    get default() {
        return Platform.types.StandaloneWindows64;
    },
    get types() {
        return {
            StandaloneOSX: 'StandaloneOSX',
            StandaloneWindows: 'StandaloneWindows',
            StandaloneWindows64: 'StandaloneWindows64',
            StandaloneLinux64: 'StandaloneLinux64',
            iOS: 'iOS',
            Android: 'Android',
            WebGL: 'WebGL',
            WSAPlayer: 'WSAPlayer',
            PS4: 'PS4',
            XboxOne: 'XboxOne',
            tvOS: 'tvOS',
            Switch: 'Switch',
            // Unsupported
            Lumin: 'Lumin',
            BJM: 'BJM',
            Stadia: 'Stadia',
            Facebook: 'Facebook',
            NoTarget: 'NoTarget',
            // Test specific
            Test: 'Test',
        };
    },
    isWindows(platform) {
        switch (platform) {
            case Platform.types.StandaloneWindows:
            case Platform.types.StandaloneWindows64:
                return true;
            default:
                return false;
        }
    },
    isAndroid(platform) {
        switch (platform) {
            case Platform.types.Android:
                return true;
            default:
                return false;
        }
    },
};
exports["default"] = Platform;


/***/ }),

/***/ 9183:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const core = __importStar(__nccwpck_require__(2186));
const fs = __importStar(__nccwpck_require__(7147));
const github = __importStar(__nccwpck_require__(5438));
const handlebars_1 = __importDefault(__nccwpck_require__(7492));
const results_parser_1 = __importDefault(__nccwpck_require__(4552));
const results_meta_1 = __nccwpck_require__(5552);
const path_1 = __importDefault(__nccwpck_require__(1017));
const ResultsCheck = {
    async createCheck(artifactsPath, githubToken, checkName) {
        // Validate input
        if (!fs.existsSync(artifactsPath) || !githubToken || !checkName) {
            throw new Error(`Missing input! {"artifactsPath": "${artifactsPath}",  "githubToken": "${githubToken}, "checkName": "${checkName}"`);
        }
        // Parse all results files
        const runs = [];
        const files = fs.readdirSync(artifactsPath);
        await Promise.all(files.map(async (filepath) => {
            if (!filepath.endsWith('.xml'))
                return;
            core.info(`Processing file ${filepath}...`);
            try {
                const content = fs.readFileSync(path_1.default.join(artifactsPath, filepath), 'utf8');
                if (!content.includes('<test-run')) {
                    // noinspection ExceptionCaughtLocallyJS
                    throw new Error('File does not appear to be a NUnit XML file');
                }
                const fileData = await results_parser_1.default.parseResults(path_1.default.join(artifactsPath, filepath));
                core.info(fileData.summary);
                runs.push(fileData);
            }
            catch (error) {
                core.warning(`Failed to parse ${filepath}: ${error.message}`);
            }
        }));
        // Combine all results into a single run summary
        const runSummary = new results_meta_1.RunMeta(checkName);
        for (const run of runs) {
            runSummary.total += run.total;
            runSummary.passed += run.passed;
            runSummary.skipped += run.skipped;
            runSummary.failed += run.failed;
            runSummary.duration += run.duration;
            for (const suite of run.suites) {
                runSummary.addTests(suite.tests);
            }
        }
        // Log
        core.info('=================');
        core.info('Analyze result:');
        core.info(runSummary.summary);
        // Format output
        const title = runSummary.summary;
        const summary = await ResultsCheck.renderSummary(runs);
        core.debug(`Summary view: ${summary}`);
        const details = await ResultsCheck.renderDetails(runs);
        core.debug(`Details view: ${details}`);
        const rawAnnotations = runSummary.extractAnnotations();
        core.debug(`Raw annotations: ${rawAnnotations}`);
        const annotations = rawAnnotations.map((rawAnnotation) => {
            const annotation = rawAnnotation;
            annotation.path = rawAnnotation.path.replace('/github/workspace/', '');
            return annotation;
        });
        core.debug(`Annotations: ${annotations}`);
        const output = {
            title,
            summary,
            text: details,
            annotations: annotations.slice(0, 50),
        };
        // Call GitHub API
        await ResultsCheck.requestGitHubCheck(githubToken, checkName, output);
        return runSummary.failed;
    },
    async requestGitHubCheck(githubToken, checkName, output) {
        const pullRequest = github.context.payload.pull_request;
        const headSha = (pullRequest && pullRequest.head.sha) || github.context.sha;
        // Check max length for https://github.com/game-ci/unity-test-runner/issues/214
        const maxLength = 65_534;
        if (output.text.length > maxLength) {
            core.warning(`Test details of ${output.text.length} surpass limit of ${maxLength}`);
            output.text =
                'Test details omitted from GitHub UI due to length. See console logs for details.';
        }
        core.info(`Posting results for ${headSha}`);
        const createCheckRequest = {
            ...github.context.repo,
            name: checkName,
            head_sha: headSha,
            status: 'completed',
            conclusion: 'neutral',
            output,
        };
        const octokit = github.getOctokit(githubToken);
        await octokit.rest.checks.create(createCheckRequest);
    },
    async renderSummary(runMetas) {
        return ResultsCheck.render(`${__dirname}/results-check-summary.hbs`, runMetas);
    },
    async renderDetails(runMetas) {
        return ResultsCheck.render(`${__dirname}/results-check-details.hbs`, runMetas);
    },
    async render(viewPath, runMetas) {
        handlebars_1.default.registerHelper('indent', (toIndent) => toIndent
            .split('\n')
            .map((s) => `        ${s.replace('/github/workspace/', '')}`)
            .join('\n'));
        const source = await fs.promises.readFile(viewPath, 'utf8');
        const template = handlebars_1.default.compile(source);
        return template({ runs: runMetas }, {
            allowProtoMethodsByDefault: true,
            allowProtoPropertiesByDefault: true,
        });
    },
};
exports["default"] = ResultsCheck;


/***/ }),

/***/ 5552:
/***/ ((__unused_webpack_module, exports) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.TestMeta = exports.RunMeta = exports.Meta = void 0;
exports.timeHelper = timeHelper;
function timeHelper(seconds) {
    return `${seconds.toFixed(3)}s`;
}
class Meta {
    title;
    duration = 0;
    constructor(title) {
        this.title = title;
    }
}
exports.Meta = Meta;
class RunMeta extends Meta {
    total = 0;
    passed = 0;
    skipped = 0;
    failed = 0;
    tests = [];
    suites = [];
    extractAnnotations() {
        const result = [];
        for (const suite of this.suites) {
            result.push(...suite.extractAnnotations());
        }
        for (const test of this.tests) {
            if (test.annotation !== undefined) {
                result.push(test.annotation);
            }
        }
        return result;
    }
    addTests(testSuite) {
        for (const test of testSuite) {
            this.addTest(test);
        }
    }
    addTest(test) {
        if (test.suite === undefined) {
            return;
        }
        if (test.suite === this.title) {
            this.total++;
            this.duration += test.duration;
            this.tests.push(test);
            if (test.result === 'Passed')
                this.passed++;
            else if (test.result === 'Failed')
                this.failed++;
            else
                this.skipped++;
            return;
        }
        let target = this.suites.find((s) => s.title === test.suite);
        if (target === undefined) {
            target = new RunMeta(test.suite);
            this.suites.push(target);
        }
        target.addTest(test);
    }
    get summary() {
        const result = this.failed > 0 ? 'Failed' : 'Passed';
        const sPart = this.skipped > 0 ? `, skipped: ${this.skipped}` : '';
        const fPart = this.failed > 0 ? `, failed: ${this.failed}` : '';
        const dPart = ` in ${timeHelper(this.duration)}`;
        return `${this.mark} ${this.title} - ${this.passed}/${this.total}${sPart}${fPart} - ${result}${dPart}`;
    }
    get mark() {
        if (this.failed > 0)
            return '❌️';
        else if (this.skipped === 0)
            return '✅';
        return '⚠️';
    }
}
exports.RunMeta = RunMeta;
class TestMeta extends Meta {
    suite;
    result;
    annotation;
    constructor(suite, title) {
        super(title);
        this.suite = suite;
        this.result = undefined;
        this.duration = Number.NaN;
    }
    isSkipped() {
        return this.result === 'Skipped';
    }
    isFailed() {
        return this.result === 'Failed';
    }
    get summary() {
        const dPart = this.isSkipped() ? '' : ` in ${timeHelper(this.duration)}`;
        return `${this.mark} **${this.title}** - ${this.result}${dPart}`;
    }
    get mark() {
        if (this.isFailed())
            return '❌️';
        else if (this.isSkipped())
            return '⚠️';
        return '✅';
    }
}
exports.TestMeta = TestMeta;


/***/ }),

/***/ 4552:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const core = __importStar(__nccwpck_require__(2186));
const fs = __importStar(__nccwpck_require__(7147));
const xmljs = __importStar(__nccwpck_require__(8821));
const results_meta_1 = __nccwpck_require__(5552);
const path_1 = __importDefault(__nccwpck_require__(1017));
const ResultsParser = {
    async parseResults(filepath) {
        if (!fs.existsSync(filepath)) {
            throw new Error(`Missing file! {"filepath": "${filepath}"}`);
        }
        core.info(`Trying to open ${filepath}`);
        const file = await fs.promises.readFile(filepath, 'utf8');
        const results = xmljs.xml2js(file, { compact: true });
        core.info(`File ${filepath} parsed...`);
        return ResultsParser.convertResults(path_1.default.basename(filepath), results);
    },
    convertResults(filename, filedata) {
        core.info(`Start analyzing results: ${filename}`);
        const run = filedata['test-run'];
        const runMeta = new results_meta_1.RunMeta(filename);
        const tests = ResultsParser.convertSuite(run['test-suite']);
        core.debug(tests.toString());
        runMeta.total = Number(run._attributes.total);
        runMeta.failed = Number(run._attributes.failed);
        runMeta.skipped = Number(run._attributes.skipped);
        runMeta.passed = Number(run._attributes.passed);
        runMeta.duration = Number(run._attributes.duration);
        runMeta.addTests(tests);
        return runMeta;
    },
    convertSuite(suites) {
        if (Array.isArray(suites)) {
            const innerResult = [];
            for (const suite of suites) {
                innerResult.push(...ResultsParser.convertSuite(suite));
            }
            return innerResult;
        }
        const result = [];
        const innerSuite = suites['test-suite'];
        if (innerSuite) {
            result.push(...ResultsParser.convertSuite(innerSuite));
        }
        const tests = suites['test-case'];
        if (tests) {
            result.push(...ResultsParser.convertTests(suites._attributes.fullname, tests));
        }
        return result;
    },
    convertTests(suite, tests) {
        if (Array.isArray(tests)) {
            const result = [];
            for (const testCase of tests) {
                result.push(ResultsParser.convertTestCase(suite, testCase));
            }
            return result;
        }
        return [ResultsParser.convertTestCase(suite, tests)];
    },
    convertTestCase(suite, testCase) {
        const { _attributes, failure, output } = testCase;
        const { name, fullname, result, duration } = _attributes;
        const testMeta = new results_meta_1.TestMeta(suite, name);
        testMeta.result = result;
        testMeta.duration = Number(duration);
        if (!failure) {
            core.debug(`Skip test ${fullname} without failure data`);
            return testMeta;
        }
        core.debug(`Convert data for test ${fullname}`);
        if (failure['stack-trace'] === undefined) {
            core.warning(`No stack trace for test case: ${fullname}`);
            return testMeta;
        }
        const trace = failure['stack-trace']._cdata;
        if (trace === undefined) {
            core.warning(`No cdata in stack trace for test case: ${fullname}`);
            return testMeta;
        }
        const point = ResultsParser.findAnnotationPoint(trace);
        if (!point.path || !point.line) {
            core.warning(`Not able to find annotation point for failed test! Test trace: ${trace}`);
            return testMeta;
        }
        const rawDetails = [trace];
        if (output && output._cdata) {
            rawDetails.unshift(output._cdata);
        }
        else {
            core.debug(`No console output for test case: ${fullname}`);
        }
        testMeta.annotation = {
            path: point.path,
            start_line: point.line,
            end_line: point.line,
            annotation_level: 'failure',
            title: fullname,
            message: failure.message._cdata ? failure.message._cdata : 'Test Failed!',
            raw_details: rawDetails.join('\n'),
            start_column: 0,
            end_column: 0,
            blob_href: '',
        };
        core.info(`- ${testMeta.annotation.path}:${testMeta.annotation.start_line} - ${testMeta.annotation.title}`);
        return testMeta;
    },
    findAnnotationPoint(trace) {
        const regex = /at(?: .* in)? ((?<path>[^:]+):(?<line>\d+))/;
        // Find first entry with non-zero line number in stack trace
        const items = trace.match(new RegExp(regex, 'g'));
        if (Array.isArray(items)) {
            const result = [];
            for (const item of items) {
                const match = item.match(regex);
                const point = {
                    path: match ? match.groups.path : '',
                    line: match ? Number(match.groups.line) : 0,
                };
                if (point.line > 0) {
                    result.push(point);
                }
            }
            if (result.length > 0) {
                return result[0];
            }
        }
        // If all entries have zero line number match fallback pattern
        const match = trace.match(regex);
        return {
            path: match ? match.groups.path : '',
            line: match ? Number(match.groups.line) : 0,
        };
    },
};
exports["default"] = ResultsParser;


/***/ }),

/***/ 7049:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const fs_1 = __importDefault(__nccwpck_require__(7147));
const path_1 = __importDefault(__nccwpck_require__(1017));
const UnityVersionParser = {
    parse(projectVersionTxt) {
        const versionRegex = /m_EditorVersion: (\d+\.\d+\.\d+[A-Za-z]?\d+)/;
        const matches = projectVersionTxt.match(versionRegex);
        if (!matches || matches.length < 2) {
            throw new Error(`Failed to extract version from "${projectVersionTxt}".`);
        }
        return matches[1];
    },
    read(projectPath) {
        const filePath = path_1.default.join(projectPath, 'ProjectSettings', 'ProjectVersion.txt');
        if (!fs_1.default.existsSync(filePath)) {
            throw new Error(`Project settings file not found at "${filePath}". Have you correctly set the projectPath?`);
        }
        return UnityVersionParser.parse(fs_1.default.readFileSync(filePath, 'utf8'));
    },
};
exports["default"] = UnityVersionParser;


/***/ }),

/***/ 95:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.run = run;
const core = __importStar(__nccwpck_require__(2186));
const action_1 = __importDefault(__nccwpck_require__(9088));
const model_1 = __nccwpck_require__(1359);
async function run() {
    try {
        const parameters = action_1.default.runnerContext();
        await model_1.Docker.ensureContainerRemoval(parameters);
    }
    catch (error) {
        core.setFailed(error.message);
    }
}


/***/ }),

/***/ 7351:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.issue = exports.issueCommand = void 0;
const os = __importStar(__nccwpck_require__(2037));
const utils_1 = __nccwpck_require__(5278);
/**
 * Commands
 *
 * Command Format:
 *   ::name key=value,key=value::message
 *
 * Examples:
 *   ::warning::This is the message
 *   ::set-env name=MY_VAR::some value
 */
function issueCommand(command, properties, message) {
    const cmd = new Command(command, properties, message);
    process.stdout.write(cmd.toString() + os.EOL);
}
exports.issueCommand = issueCommand;
function issue(name, message = '') {
    issueCommand(name, {}, message);
}
exports.issue = issue;
const CMD_STRING = '::';
class Command {
    constructor(command, properties, message) {
        if (!command) {
            command = 'missing.command';
        }
        this.command = command;
        this.properties = properties;
        this.message = message;
    }
    toString() {
        let cmdStr = CMD_STRING + this.command;
        if (this.properties && Object.keys(this.properties).length > 0) {
            cmdStr += ' ';
            let first = true;
            for (const key in this.properties) {
                if (this.properties.hasOwnProperty(key)) {
                    const val = this.properties[key];
                    if (val) {
                        if (first) {
                            first = false;
                        }
                        else {
                            cmdStr += ',';
                        }
                        cmdStr += `${key}=${escapeProperty(val)}`;
                    }
                }
            }
        }
        cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
        return cmdStr;
    }
}
function escapeData(s) {
    return (0, utils_1.toCommandValue)(s)
        .replace(/%/g, '%25')
        .replace(/\r/g, '%0D')
        .replace(/\n/g, '%0A');
}
function escapeProperty(s) {
    return (0, utils_1.toCommandValue)(s)
        .replace(/%/g, '%25')
        .replace(/\r/g, '%0D')
        .replace(/\n/g, '%0A')
        .replace(/:/g, '%3A')
        .replace(/,/g, '%2C');
}
//# sourceMappingURL=command.js.map

/***/ }),

/***/ 2186:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {

"use strict";

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
const command_1 = __nccwpck_require__(7351);
const file_command_1 = __nccwpck_require__(717);
const utils_1 = __nccwpck_require__(5278);
const os = __importStar(__nccwpck_require__(2037));
const path = __importStar(__nccwpck_require__(1017));
const oidc_utils_1 = __nccwpck_require__(8041);
/**
 * The code to exit an action
 */
var ExitCode;
(function (ExitCode) {
    /**
     * A code indicating that the action was successful
     */
    ExitCode[ExitCode["Success"] = 0] = "Success";
    /**
     * A code indicating that the action was a failure
     */
    ExitCode[ExitCode["Failure"] = 1] = "Failure";
})(ExitCode || (exports.ExitCode = ExitCode = {}));
//-----------------------------------------------------------------------
// Variables
//-----------------------------------------------------------------------
/**
 * Sets env variable for this action and future actions in the job
 * @param name the name of the variable to set
 * @param val the value of the variable. Non-string values will be converted to a string via JSON.string
Download .txt
gitextract_yq8ss52c/

├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   ├── feature_request.md
│   │   └── other.md
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── cats.yml
│       ├── main.yml
│       └── versioning.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .oxfmtrc.json
├── .oxlintrc.json
├── .yarnrc.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── action.yml
├── artifacts/
│   ├── editmode-results.xml
│   └── playmode-results.xml
├── dist/
│   ├── BlankProject/
│   │   ├── .gitignore
│   │   ├── Assets/
│   │   │   ├── Scenes/
│   │   │   │   ├── SampleScene.unity
│   │   │   │   └── SampleScene.unity.meta
│   │   │   └── Scenes.meta
│   │   ├── Packages/
│   │   │   ├── manifest.json
│   │   │   └── packages-lock.json
│   │   └── ProjectSettings/
│   │       ├── AudioManager.asset
│   │       ├── ClusterInputManager.asset
│   │       ├── DynamicsManager.asset
│   │       ├── EditorBuildSettings.asset
│   │       ├── EditorSettings.asset
│   │       ├── GraphicsSettings.asset
│   │       ├── InputManager.asset
│   │       ├── MemorySettings.asset
│   │       ├── NavMeshAreas.asset
│   │       ├── NetworkManager.asset
│   │       ├── PackageManagerSettings.asset
│   │       ├── Physics2DSettings.asset
│   │       ├── PresetManager.asset
│   │       ├── ProjectSettings.asset
│   │       ├── ProjectVersion.txt
│   │       ├── QualitySettings.asset
│   │       ├── TagManager.asset
│   │       ├── TimeManager.asset
│   │       ├── UnityConnectSettings.asset
│   │       ├── VFXManager.asset
│   │       ├── VersionControlSettings.asset
│   │       └── boot.config
│   ├── index.js
│   ├── licenses.txt
│   ├── main.js
│   ├── platforms/
│   │   ├── ubuntu/
│   │   │   ├── activate.sh
│   │   │   ├── entrypoint.sh
│   │   │   ├── return_license.sh
│   │   │   ├── run_steps.sh
│   │   │   ├── run_tests.sh
│   │   │   ├── set_extra_git_configs.sh
│   │   │   └── set_gitcredential.sh
│   │   └── windows/
│   │       ├── activate.ps1
│   │       ├── entrypoint.ps1
│   │       ├── return_license.ps1
│   │       ├── run_tests.ps1
│   │       └── set_gitcredential.ps1
│   ├── post.js
│   ├── results-check-details.hbs
│   ├── results-check-summary.hbs
│   ├── sourcemap-register.js
│   ├── test-standalone-scripts/
│   │   ├── .gitignore
│   │   ├── Assets/
│   │   │   ├── Editor/
│   │   │   │   ├── UnityTestRunnerAction/
│   │   │   │   │   ├── PlayerBuildModifier.cs
│   │   │   │   │   └── PlayerBuildModifier.cs.meta
│   │   │   │   └── UnityTestRunnerAction.meta
│   │   │   ├── Editor.meta
│   │   │   ├── Player/
│   │   │   │   ├── UnityTestRunnerAction/
│   │   │   │   │   ├── TestRunCallback.cs
│   │   │   │   │   ├── TestRunCallback.cs.meta
│   │   │   │   │   ├── UnityTestRunnerAction.asmdef
│   │   │   │   │   └── UnityTestRunnerAction.asmdef.meta
│   │   │   │   └── UnityTestRunnerAction.meta
│   │   │   └── Player.meta
│   │   ├── Packages/
│   │   │   └── manifest.json
│   │   └── ProjectSettings/
│   │       ├── AudioManager.asset
│   │       ├── ClusterInputManager.asset
│   │       ├── DynamicsManager.asset
│   │       ├── EditorBuildSettings.asset
│   │       ├── EditorSettings.asset
│   │       ├── GraphicsSettings.asset
│   │       ├── InputManager.asset
│   │       ├── NavMeshAreas.asset
│   │       ├── Physics2DSettings.asset
│   │       ├── PresetManager.asset
│   │       ├── ProjectSettings.asset
│   │       ├── ProjectVersion.txt
│   │       ├── QualitySettings.asset
│   │       ├── TagManager.asset
│   │       ├── TimeManager.asset
│   │       ├── UnityConnectSettings.asset
│   │       ├── VFXManager.asset
│   │       └── XRSettings.asset
│   └── unity-config/
│       └── services-config.json.template
├── mise.toml
├── package.json
├── scripts/
│   └── ensure-husky.mjs
├── src/
│   ├── index.ts
│   ├── main.ts
│   ├── model/
│   │   ├── action.test.ts
│   │   ├── action.ts
│   │   ├── docker.test.ts
│   │   ├── docker.ts
│   │   ├── image-environment-factory.ts
│   │   ├── image-tag.test.ts
│   │   ├── image-tag.ts
│   │   ├── index.test.ts
│   │   ├── index.ts
│   │   ├── input.test.ts
│   │   ├── input.ts
│   │   ├── licensing-server-setup.ts
│   │   ├── output.test.ts
│   │   ├── output.ts
│   │   ├── platform.test.ts
│   │   ├── platform.ts
│   │   ├── results-check.test.ts
│   │   ├── results-check.ts
│   │   ├── results-meta.ts
│   │   ├── results-parser.test.ts
│   │   ├── results-parser.ts
│   │   ├── results-report.ts
│   │   ├── unity-version-parser.test.ts
│   │   └── unity-version-parser.ts
│   ├── post.ts
│   ├── test/
│   │   └── setup.ts
│   └── views/
│       ├── results-check-details.hbs
│       └── results-check-summary.hbs
├── tsconfig.json
├── unity-package-with-correct-tests/
│   ├── com.dependencyexample.testpackage/
│   │   ├── Editor/
│   │   │   ├── TimerFeature/
│   │   │   │   ├── TimerComponentEditor.cs
│   │   │   │   └── TimerComponentEditor.cs.meta
│   │   │   ├── TimerFeature.meta
│   │   │   ├── example.testpackage.Editor.asmdef
│   │   │   └── example.testpackage.Editor.asmdef.meta
│   │   ├── Editor.meta
│   │   ├── Runtime/
│   │   │   ├── TimerFeature/
│   │   │   │   ├── Scripts/
│   │   │   │   │   ├── BasicCounter.cs
│   │   │   │   │   ├── BasicCounter.cs.meta
│   │   │   │   │   ├── SampleComponent.cs
│   │   │   │   │   ├── SampleComponent.cs.meta
│   │   │   │   │   ├── TimerComponent.cs
│   │   │   │   │   └── TimerComponent.cs.meta
│   │   │   │   └── Scripts.meta
│   │   │   ├── TimerFeature.meta
│   │   │   ├── example.testpackage.Runtime.asmdef
│   │   │   └── example.testpackage.Runtime.asmdef.meta
│   │   ├── Runtime.meta
│   │   ├── Tests/
│   │   │   ├── Editor/
│   │   │   │   ├── SampleEditModeTest.cs
│   │   │   │   ├── SampleEditModeTest.cs.meta
│   │   │   │   ├── example.testpackage.EditorTests.asmdef
│   │   │   │   └── example.testpackage.EditorTests.asmdef.meta
│   │   │   ├── Editor.meta
│   │   │   ├── Runtime/
│   │   │   │   ├── SampleComponentTest.cs
│   │   │   │   ├── SampleComponentTest.cs.meta
│   │   │   │   ├── SamplePlayModeTest.cs
│   │   │   │   ├── SamplePlayModeTest.cs.meta
│   │   │   │   ├── TimerComponentTest.cs
│   │   │   │   ├── TimerComponentTest.cs.meta
│   │   │   │   ├── example.testpackage.RuntimeTests.asmdef
│   │   │   │   └── example.testpackage.RuntimeTests.asmdef.meta
│   │   │   └── Runtime.meta
│   │   ├── Tests.meta
│   │   ├── package.json
│   │   └── package.json.meta
│   └── com.example.testpackage/
│       ├── Editor/
│       │   ├── TimerFeature/
│       │   │   ├── TimerComponentEditor.cs
│       │   │   └── TimerComponentEditor.cs.meta
│       │   ├── TimerFeature.meta
│       │   ├── example.testpackage.Editor.asmdef
│       │   └── example.testpackage.Editor.asmdef.meta
│       ├── Editor.meta
│       ├── Runtime/
│       │   ├── TimerFeature/
│       │   │   ├── Scripts/
│       │   │   │   ├── BasicCounter.cs
│       │   │   │   ├── BasicCounter.cs.meta
│       │   │   │   ├── SampleComponent.cs
│       │   │   │   ├── SampleComponent.cs.meta
│       │   │   │   ├── TimerComponent.cs
│       │   │   │   └── TimerComponent.cs.meta
│       │   │   └── Scripts.meta
│       │   ├── TimerFeature.meta
│       │   ├── example.testpackage.Runtime.asmdef
│       │   └── example.testpackage.Runtime.asmdef.meta
│       ├── Runtime.meta
│       ├── Tests/
│       │   ├── Editor/
│       │   │   ├── SampleEditModeTest.cs
│       │   │   ├── SampleEditModeTest.cs.meta
│       │   │   ├── example.testpackage.EditorTests.asmdef
│       │   │   └── example.testpackage.EditorTests.asmdef.meta
│       │   ├── Editor.meta
│       │   ├── Runtime/
│       │   │   ├── SampleComponentTest.cs
│       │   │   ├── SampleComponentTest.cs.meta
│       │   │   ├── SamplePlayModeTest.cs
│       │   │   ├── SamplePlayModeTest.cs.meta
│       │   │   ├── TimerComponentTest.cs
│       │   │   ├── TimerComponentTest.cs.meta
│       │   │   ├── example.testpackage.RuntimeTests.asmdef
│       │   │   └── example.testpackage.RuntimeTests.asmdef.meta
│       │   └── Runtime.meta
│       ├── Tests.meta
│       ├── package.json
│       └── package.json.meta
├── unity-project-with-correct-tests/
│   ├── .gitattributes
│   ├── .gitignore
│   ├── .vscode/
│   │   └── settings.json
│   ├── Assets/
│   │   ├── Scenes/
│   │   │   ├── SampleScene.unity
│   │   │   └── SampleScene.unity.meta
│   │   ├── Scenes.meta
│   │   ├── Scripts/
│   │   │   ├── BasicCounter.cs
│   │   │   ├── BasicCounter.cs.meta
│   │   │   ├── MyScripts.asmdef
│   │   │   ├── MyScripts.asmdef.meta
│   │   │   ├── SampleComponent.cs
│   │   │   ├── SampleComponent.cs.meta
│   │   │   ├── TimerComponent.cs
│   │   │   └── TimerComponent.cs.meta
│   │   ├── Scripts.meta
│   │   ├── Tests/
│   │   │   ├── EditMode/
│   │   │   │   ├── EditModeTests.asmdef
│   │   │   │   ├── EditModeTests.asmdef.meta
│   │   │   │   ├── SampleEditModeTest.cs
│   │   │   │   └── SampleEditModeTest.cs.meta
│   │   │   ├── EditMode.meta
│   │   │   ├── PlayMode/
│   │   │   │   ├── PlayModeTests.asmdef
│   │   │   │   ├── PlayModeTests.asmdef.meta
│   │   │   │   ├── SampleComponentTest.cs
│   │   │   │   ├── SampleComponentTest.cs.meta
│   │   │   │   ├── SamplePlayModeTest.cs
│   │   │   │   ├── SamplePlayModeTest.cs.meta
│   │   │   │   ├── TimerComponentTest.cs
│   │   │   │   └── TimerComponentTest.cs.meta
│   │   │   └── PlayMode.meta
│   │   └── Tests.meta
│   ├── Packages/
│   │   ├── manifest.json
│   │   └── packages-lock.json
│   └── ProjectSettings/
│       ├── AudioManager.asset
│       ├── ClusterInputManager.asset
│       ├── DynamicsManager.asset
│       ├── EditorBuildSettings.asset
│       ├── EditorSettings.asset
│       ├── GraphicsSettings.asset
│       ├── InputManager.asset
│       ├── MemorySettings.asset
│       ├── NavMeshAreas.asset
│       ├── PackageManagerSettings.asset
│       ├── Physics2DSettings.asset
│       ├── PresetManager.asset
│       ├── ProjectSettings.asset
│       ├── ProjectVersion.txt
│       ├── QualitySettings.asset
│       ├── TagManager.asset
│       ├── TimeManager.asset
│       ├── UnityConnectSettings.asset
│       ├── VFXManager.asset
│       ├── VersionControlSettings.asset
│       └── XRSettings.asset
└── vitest.config.mts
Download .txt
SYMBOL INDEX (1716 symbols across 42 files)

FILE: dist/index.js
  function run (line 46) | async function run() {
  method supportedPlatforms (line 117) | get supportedPlatforms() {
  method isRunningLocally (line 120) | get isRunningLocally() {
  method isRunningFromSource (line 123) | get isRunningFromSource() {
  method canonicalName (line 126) | get canonicalName() {
  method rootFolder (line 129) | get rootFolder() {
  method actionFolder (line 135) | get actionFolder() {
  method workspace (line 138) | get workspace() {
  method runnerContext (line 141) | runnerContext() {
  method checkCompatibility (line 149) | checkCompatibility() {
  method ensureContainerRemoval (line 188) | async ensureContainerRemoval(parameters) {
  method run (line 197) | async run(image, parameters, silent = false) {
  method getLinuxCommand (line 214) | getLinuxCommand(image, parameters) {
  method getWindowsCommand (line 254) | getWindowsCommand(image, parameters) {
  class ImageEnvironmentFactory (line 302) | class ImageEnvironmentFactory {
    method getEnvVarString (line 303) | static getEnvVarString(parameters) {
    method getEnvironmentVariables (line 319) | static getEnvironmentVariables(parameters) {
  class ImageTag (line 389) | class ImageTag {
    method constructor (line 397) | constructor(imageProperties) {
    method versionPattern (line 412) | static get versionPattern() {
    method targetPlatformSuffixes (line 415) | static get targetPlatformSuffixes() {
    method getImagePlatformPrefix (line 428) | static getImagePlatformPrefix(platform) {
    method getImagePlatformType (line 438) | static getImagePlatformType(platform) {
    method getTargetPlatformSuffix (line 448) | static getTargetPlatformSuffix(targetPlatform, editorVersion) {
    method tag (line 502) | get tag() {
    method image (line 506) | get image() {
    method toString (line 509) | toString() {
  class Input (line 594) | class Input {
    method testModes (line 595) | static get testModes() {
    method isValidFolderName (line 598) | static isValidFolderName(folderName) {
    method isValidGlobalFolderName (line 602) | static isValidGlobalFolderName(folderName) {
    method getPackageNameFromPackageJson (line 609) | static getPackageNameFromPackageJson(packagePath) {
    method getSerialFromLicenseFile (line 633) | static getSerialFromLicenseFile(license) {
    method verifyTestsFolderIsPresent (line 647) | static verifyTestsFolderIsPresent(packagePath) {
    method getFromUser (line 652) | static getFromUser() {
  class LicensingServerSetup (line 838) | class LicensingServerSetup {
    method Setup (line 839) | static Setup(unityLicensingServer, actionFolder) {
  method setArtifactsPath (line 897) | async setArtifactsPath(artifactsPath) {
  method setCoveragePath (line 900) | async setCoveragePath(coveragePath) {
  method default (line 916) | get default() {
  method types (line 919) | get types() {
  method isWindows (line 943) | isWindows(platform) {
  method isAndroid (line 952) | isAndroid(platform) {
  method createCheck (line 1016) | async createCheck(artifactsPath, githubToken, checkName) {
  method requestGitHubCheck (line 1082) | async requestGitHubCheck(githubToken, checkName, output) {
  method renderSummary (line 1104) | async renderSummary(runMetas) {
  method renderDetails (line 1107) | async renderDetails(runMetas) {
  method render (line 1110) | async render(viewPath, runMetas) {
  function timeHelper (line 1136) | function timeHelper(seconds) {
  class Meta (line 1139) | class Meta {
    method constructor (line 1142) | constructor(title) {
  class RunMeta (line 1147) | class RunMeta extends Meta {
    method extractAnnotations (line 1154) | extractAnnotations() {
    method addTests (line 1166) | addTests(testSuite) {
    method addTest (line 1171) | addTest(test) {
    method summary (line 1194) | get summary() {
    method mark (line 1201) | get mark() {
  class TestMeta (line 1210) | class TestMeta extends Meta {
    method constructor (line 1214) | constructor(suite, title) {
    method isSkipped (line 1220) | isSkipped() {
    method isFailed (line 1223) | isFailed() {
    method summary (line 1226) | get summary() {
    method mark (line 1230) | get mark() {
  method parseResults (line 1291) | async parseResults(filepath) {
  method convertResults (line 1301) | convertResults(filename, filedata) {
  method convertSuite (line 1315) | convertSuite(suites) {
  method convertTests (line 1334) | convertTests(suite, tests) {
  method convertTestCase (line 1344) | convertTestCase(suite, testCase) {
  method findAnnotationPoint (line 1391) | findAnnotationPoint(trace) {
  method parse (line 1436) | parse(projectVersionTxt) {
  method read (line 1444) | read(projectPath) {
  function run (line 1503) | async function run() {
  function issueCommand (line 1558) | function issueCommand(command, properties, message) {
  function issue (line 1563) | function issue(name, message = '') {
  class Command (line 1568) | class Command {
    method constructor (line 1569) | constructor(command, properties, message) {
    method toString (line 1577) | toString() {
  function escapeData (line 1601) | function escapeData(s) {
  function escapeProperty (line 1607) | function escapeProperty(s) {
  function adopt (line 1648) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 1650) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 1651) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 1652) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  function exportVariable (line 1687) | function exportVariable(name, val) {
  function setSecret (line 1701) | function setSecret(secret) {
  function addPath (line 1709) | function addPath(inputPath) {
  function getInput (line 1729) | function getInput(name, options) {
  function getMultilineInput (line 1748) | function getMultilineInput(name, options) {
  function getBooleanInput (line 1768) | function getBooleanInput(name, options) {
  function setOutput (line 1787) | function setOutput(name, value) {
  function setCommandEcho (line 1801) | function setCommandEcho(enabled) {
  function setFailed (line 1813) | function setFailed(message) {
  function isDebug (line 1824) | function isDebug() {
  function debug (line 1832) | function debug(message) {
  function error (line 1841) | function error(message, properties = {}) {
  function warning (line 1850) | function warning(message, properties = {}) {
  function notice (line 1859) | function notice(message, properties = {}) {
  function info (line 1867) | function info(message) {
  function startGroup (line 1878) | function startGroup(name) {
  function endGroup (line 1885) | function endGroup() {
  function group (line 1897) | function group(name, fn) {
  function saveState (line 1921) | function saveState(name, value) {
  function getState (line 1935) | function getState(name) {
  function getIDToken (line 1939) | function getIDToken(aud) {
  function issueFileCommand (line 2007) | function issueFileCommand(command, message) {
  function prepareKeyValueMessage (line 2020) | function prepareKeyValueMessage(key, value) {
  function adopt (line 2045) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 2047) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 2048) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 2049) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  class OidcClient (line 2058) | class OidcClient {
    method createHttpClient (line 2059) | static createHttpClient(allowRetry = true, maxRetry = 10) {
    method getRequestToken (line 2066) | static getRequestToken() {
    method getIDTokenUrl (line 2073) | static getIDTokenUrl() {
    method getCall (line 2080) | static getCall(id_token_url) {
    method getIDToken (line 2098) | static getIDToken(audience) {
  function toPosixPath (line 2161) | function toPosixPath(pth) {
  function toWin32Path (line 2172) | function toWin32Path(pth) {
  function toPlatformPath (line 2184) | function toPlatformPath(pth) {
  function adopt (line 2221) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 2223) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 2224) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 2225) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  function getDetails (line 2275) | function getDetails() {
  function adopt (line 2299) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 2301) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 2302) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 2303) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  class Summary (line 2314) | class Summary {
    method constructor (line 2315) | constructor() {
    method filePath (line 2324) | filePath() {
    method wrap (line 2352) | wrap(tag, content, attrs = {}) {
    method write (line 2368) | write(options) {
    method clear (line 2382) | clear() {
    method stringify (line 2392) | stringify() {
    method isEmptyBuffer (line 2400) | isEmptyBuffer() {
    method emptyBuffer (line 2408) | emptyBuffer() {
    method addRaw (line 2420) | addRaw(text, addEOL = false) {
    method addEOL (line 2429) | addEOL() {
    method addCodeBlock (line 2440) | addCodeBlock(code, lang) {
    method addList (line 2453) | addList(items, ordered = false) {
    method addTable (line 2466) | addTable(rows) {
    method addDetails (line 2494) | addDetails(label, content) {
    method addImage (line 2507) | addImage(src, alt, options) {
    method addHeading (line 2521) | addHeading(text, level) {
    method addSeparator (line 2534) | addSeparator() {
    method addBreak (line 2543) | addBreak() {
    method addQuote (line 2555) | addQuote(text, cite) {
    method addLink (line 2568) | addLink(text, href) {
  function toCommandValue (line 2596) | function toCommandValue(input) {
  function toCommandProperties (line 2612) | function toCommandProperties(annotationProperties) {
  function adopt (line 2655) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 2657) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 2658) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 2659) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  function exec (line 2677) | function exec(commandLine, args, options) {
  function getExecOutput (line 2701) | function getExecOutput(commandLine, args, options) {
  function adopt (line 2765) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 2767) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 2768) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 2769) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  class ToolRunner (line 2787) | class ToolRunner extends events.EventEmitter {
    method constructor (line 2788) | constructor(toolPath, args, options) {
    method _debug (line 2797) | _debug(message) {
    method _getCommandString (line 2802) | _getCommandString(options, noPrefix) {
    method _processLineBuffer (line 2840) | _processLineBuffer(data, strBuffer, onLine) {
    method _getSpawnFileName (line 2859) | _getSpawnFileName() {
    method _getSpawnArgs (line 2867) | _getSpawnArgs(options) {
    method _endsWith (line 2883) | _endsWith(str, end) {
    method _isCmdFile (line 2886) | _isCmdFile() {
    method _windowsQuoteCmdArg (line 2891) | _windowsQuoteCmdArg(arg) {
    method _uvQuoteCmdArg (line 3011) | _uvQuoteCmdArg(arg) {
    method _cloneExecOptions (line 3090) | _cloneExecOptions(options) {
    method _getSpawnOptions (line 3105) | _getSpawnOptions(options, toolPath) {
    method exec (line 3126) | exec() {
  function argStringToArray (line 3246) | function argStringToArray(argString) {
  class ExecState (line 3293) | class ExecState extends events.EventEmitter {
    method constructor (line 3294) | constructor(options, toolPath) {
    method CheckComplete (line 3313) | CheckComplete() {
    method _debug (line 3324) | _debug(message) {
    method _setResult (line 3327) | _setResult() {
    method HandleTimeout (line 3349) | static HandleTimeout(state) {
  class Context (line 3374) | class Context {
    method constructor (line 3378) | constructor() {
    method issue (line 3403) | get issue() {
    method repo (line 3407) | get repo() {
  function getOctokit (line 3461) | function getOctokit(token, options, ...additionalPlugins) {
  function getAuthString (line 3497) | function getAuthString(token, options) {
  function getProxyAgent (line 3507) | function getProxyAgent(destinationUrl) {
  function getApiBaseUrl (line 3512) | function getApiBaseUrl() {
  function getOctokitOptions (line 3567) | function getOctokitOptions(token, options) {
  function adopt (line 3587) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 3589) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 3590) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 3591) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  class BasicCredentialHandler (line 3597) | class BasicCredentialHandler {
    method constructor (line 3598) | constructor(username, password) {
    method prepareRequest (line 3602) | prepareRequest(options) {
    method canHandleAuthentication (line 3609) | canHandleAuthentication() {
    method handleAuthentication (line 3612) | handleAuthentication() {
  class BearerCredentialHandler (line 3619) | class BearerCredentialHandler {
    method constructor (line 3620) | constructor(token) {
    method prepareRequest (line 3625) | prepareRequest(options) {
    method canHandleAuthentication (line 3632) | canHandleAuthentication() {
    method handleAuthentication (line 3635) | handleAuthentication() {
  class PersonalAccessTokenCredentialHandler (line 3642) | class PersonalAccessTokenCredentialHandler {
    method constructor (line 3643) | constructor(token) {
    method prepareRequest (line 3648) | prepareRequest(options) {
    method canHandleAuthentication (line 3655) | canHandleAuthentication() {
    method handleAuthentication (line 3658) | handleAuthentication() {
  function adopt (line 3699) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 3701) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 3702) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 3703) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  function getProxyUrl (line 3757) | function getProxyUrl(serverUrl) {
  class HttpClientError (line 3777) | class HttpClientError extends Error {
    method constructor (line 3778) | constructor(message, statusCode) {
  class HttpClientResponse (line 3786) | class HttpClientResponse {
    method constructor (line 3787) | constructor(message) {
    method readBody (line 3790) | readBody() {
    method readBodyBuffer (line 3803) | readBodyBuffer() {
  function isHttps (line 3818) | function isHttps(requestUrl) {
  class HttpClient (line 3823) | class HttpClient {
    method constructor (line 3824) | constructor(userAgent, handlers, requestOptions) {
    method options (line 3861) | options(requestUrl, additionalHeaders) {
    method get (line 3866) | get(requestUrl, additionalHeaders) {
    method del (line 3871) | del(requestUrl, additionalHeaders) {
    method post (line 3876) | post(requestUrl, data, additionalHeaders) {
    method patch (line 3881) | patch(requestUrl, data, additionalHeaders) {
    method put (line 3886) | put(requestUrl, data, additionalHeaders) {
    method head (line 3891) | head(requestUrl, additionalHeaders) {
    method sendStream (line 3896) | sendStream(verb, requestUrl, stream, additionalHeaders) {
    method getJson (line 3905) | getJson(requestUrl, additionalHeaders = {}) {
    method postJson (line 3912) | postJson(requestUrl, obj, additionalHeaders = {}) {
    method putJson (line 3921) | putJson(requestUrl, obj, additionalHeaders = {}) {
    method patchJson (line 3930) | patchJson(requestUrl, obj, additionalHeaders = {}) {
    method request (line 3944) | request(verb, requestUrl, data, headers) {
    method dispose (line 4029) | dispose() {
    method requestRaw (line 4040) | requestRaw(info, data) {
    method requestRawWithCallback (line 4065) | requestRawWithCallback(info, data, onResult) {
    method getAgent (line 4117) | getAgent(serverUrl) {
    method getAgentDispatcher (line 4121) | getAgentDispatcher(serverUrl) {
    method _prepareRequest (line 4130) | _prepareRequest(method, requestUrl, headers) {
    method _mergeHeaders (line 4157) | _mergeHeaders(headers) {
    method _getExistingOrDefaultHeader (line 4163) | _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
    method _getAgent (line 4170) | _getAgent(parsedUrl) {
    method _getProxyAgentDispatcher (line 4225) | _getProxyAgentDispatcher(parsedUrl, proxyUrl) {
    method _performExponentialBackoff (line 4249) | _performExponentialBackoff(retryNumber) {
    method _processResponse (line 4256) | _processResponse(res, options) {
  function getProxyUrl (line 4335) | function getProxyUrl(reqUrl) {
  function checkBypass (line 4362) | function checkBypass(reqUrl) {
  function isLoopbackAddress (line 4406) | function isLoopbackAddress(host) {
  class DecodedURL (line 4413) | class DecodedURL extends URL {
    method constructor (line 4414) | constructor(url, base) {
    method username (line 4419) | get username() {
    method password (line 4422) | get password() {
  function adopt (line 4455) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 4457) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 4458) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 4459) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  function exists (line 4476) | function exists(fsPath) {
  function isDirectory (line 4491) | function isDirectory(fsPath, useStat = false) {
  function isRooted (line 4502) | function isRooted(p) {
  function tryGetExecutablePath (line 4520) | function tryGetExecutablePath(filePath, extensions) {
  function normalizeSeparators (line 4591) | function normalizeSeparators(p) {
  function isUnixExecutable (line 4605) | function isUnixExecutable(stats) {
  function getCmdPath (line 4611) | function getCmdPath() {
  function adopt (line 4645) | function adopt(value) { return value instanceof P ? value : new P(functi...
  function fulfilled (line 4647) | function fulfilled(value) { try { step(generator.next(value)); } catch (...
  function rejected (line 4648) | function rejected(value) { try { step(generator["throw"](value)); } catc...
  function step (line 4649) | function step(result) { result.done ? resolve(result.value) : adopt(resu...
  function cp (line 4666) | function cp(source, dest, options = {}) {
  function mv (line 4707) | function mv(source, dest, options = {}) {
  function rmRF (line 4735) | function rmRF(inputPath) {
  function mkdirP (line 4766) | function mkdirP(fsPath) {
  function which (line 4781) | function which(tool, check) {
  function findInPath (line 4812) | function findInPath(tool) {
  function readCopyOptions (line 4864) | function readCopyOptions(options) {
  function cpDirRecursive (line 4872) | function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
  function copyFile (line 4897) | function copyFile(srcFile, destFile, force) {
  function auth (line 4937) | async function auth(token) {
  function withAuthorizationPrefix (line 4954) | function withAuthorizationPrefix(token) {
  function hook (line 4962) | async function hook(token, request, route, parameters) {
  function _objectWithoutPropertiesLoose (line 5003) | function _objectWithoutPropertiesLoose(source, excluded) {
  function _objectWithoutProperties (line 5018) | function _objectWithoutProperties(source, excluded) {
  class Octokit (line 5042) | class Octokit {
    method constructor (line 5043) | constructor(options = {}) {
    method defaults (line 5129) | static defaults(defaults) {
    method plugin (line 5155) | static plugin(...newPlugins) {
  function lowercaseKeys (line 5184) | function lowercaseKeys(object) {
  function mergeDeep (line 5195) | function mergeDeep(defaults, options) {
  function removeUndefinedProperties (line 5211) | function removeUndefinedProperties(obj) {
  function merge (line 5221) | function merge(defaults, route, options) {
  function addQueryParameters (line 5249) | function addQueryParameters(url, parameters) {
  function removeNonChars (line 5268) | function removeNonChars(variableName) {
  function extractUrlVariableNames (line 5272) | function extractUrlVariableNames(url) {
  function omit (line 5282) | function omit(object, keysToOmit) {
  function encodeReserved (line 5316) | function encodeReserved(str) {
  function encodeUnreserved (line 5326) | function encodeUnreserved(str) {
  function encodeValue (line 5332) | function encodeValue(operator, value, key) {
  function isDefined (line 5342) | function isDefined(value) {
  function isKeyOperator (line 5346) | function isKeyOperator(operator) {
  function getValues (line 5350) | function getValues(context, operator, key, modifier) {
  function parseUrl (line 5414) | function parseUrl(template) {
  function expand (line 5420) | function expand(template, context) {
  function parse (line 5456) | function parse(options) {
  function endpointWithDefaults (line 5530) | function endpointWithDefaults(defaults, route, options) {
  function withDefaults (line 5534) | function withDefaults(oldDefaults, newDefaults) {
  function _buildMessageForResponseErrors (line 5584) | function _buildMessageForResponseErrors(data) {
  class GraphqlResponseError (line 5588) | class GraphqlResponseError extends Error {
    method constructor (line 5589) | constructor(request, headers, response) {
  function graphql (line 5611) | function graphql(request, query, options) {
  function withDefaults (line 5662) | function withDefaults(request$1, newDefaults) {
  function withCustomRequest (line 5682) | function withCustomRequest(customRequest) {
  function ownKeys (line 5707) | function ownKeys(object, enumerableOnly) {
  function _objectSpread2 (line 5720) | function _objectSpread2(target) {
  function _defineProperty (line 5733) | function _defineProperty(obj, key, value) {
  function normalizePaginatedListResponse (line 5764) | function normalizePaginatedListResponse(response) {
  function iterator (line 5798) | function iterator(octokit, route, parameters) {
  function paginate (line 5842) | function paginate(octokit, route, parameters, mapFn) {
  function gather (line 5851) | function gather(octokit, results, iterator, mapFn) {
  function isPaginatingEndpoint (line 5879) | function isPaginatingEndpoint(arg) {
  function paginateRest (line 5892) | function paginateRest(octokit) {
  function ownKeys (line 5918) | function ownKeys(object, enumerableOnly) {
  function _objectSpread2 (line 5936) | function _objectSpread2(target) {
  function _defineProperty (line 5956) | function _defineProperty(obj, key, value) {
  function endpointsToMethods (line 6922) | function endpointsToMethods(octokit, endpointsMap) {
  function decorate (line 6952) | function decorate(octokit, scope, methodName, defaults, decorations) {
  function restEndpointMethods (line 7003) | function restEndpointMethods(octokit) {
  function legacyRestEndpointMethods (line 7010) | function legacyRestEndpointMethods(octokit) {
  function _interopDefault (line 7033) | function _interopDefault (ex) { return (ex && (typeof ex === 'object') &...
  class RequestError (line 7044) | class RequestError extends Error {
    method constructor (line 7045) | constructor(message, statusCode, options) {
  function _interopDefault (line 7115) | function _interopDefault (ex) { return (ex && (typeof ex === 'object') &...
  function getBufferResponse (line 7125) | function getBufferResponse(response) {
  function fetchWrapper (line 7129) | function fetchWrapper(requestOptions) {
  function getResponseData (line 7224) | async function getResponseData(response) {
  function toErrorMessage (line 7238) | function toErrorMessage(data) {
  function withDefaults (line 7253) | function withDefaults(oldEndpoint, newDefaults) {
  function bindApi (line 7303) | function bindApi(hook, state, name) {
  function HookSingular (line 7316) | function HookSingular() {
  function HookCollection (line 7326) | function HookCollection() {
  function Hook (line 7338) | function Hook() {
  function addHook (line 7365) | function addHook(state, kind, name, hook) {
  function register (line 7418) | function register(state, name, method, options) {
  function removeHook (line 7452) | function removeHook(state, name, method) {
  class Deprecation (line 7481) | class Deprecation extends Error {
    method constructor (line 7482) | constructor(message) {
  function _interopRequireDefault (line 7510) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function create (line 7539) | function create() {
  function _interopRequireDefault (line 7584) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireWildcard (line 7588) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
  function create (line 7618) | function create() {
  function _interopRequireDefault (line 7659) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function HandlebarsEnvironment (line 7698) | function HandlebarsEnvironment(helpers, partials, decorators) {
  function _interopRequireWildcard (line 7823) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
  function _interopRequireDefault (line 7827) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function parseWithoutProcessing (line 7852) | function parseWithoutProcessing(input, options) {
  function parse (line 7873) | function parse(input, options) {
  function validateInputAst (line 7880) | function validateInputAst(ast) {
  function validateAstNode (line 7884) | function validateAstNode(node) {
  function isValidDepth (line 7928) | function isValidDepth(depth) {
  function castChunk (line 7991) | function castChunk(chunk, codeGen, loc) {
  function CodeGen (line 8006) | function CodeGen(srcFile) {
  function _interopRequireDefault (line 8126) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function Compiler (line 8140) | function Compiler() {}
  function precompile (line 8587) | function precompile(input, options, env) {
  function compile (line 8605) | function compile(input, options, env) {
  function argEquals (line 8651) | function argEquals(a, b) {
  function transformLiteralToPath (line 8666) | function transformLiteralToPath(sexpr) {
  function _interopRequireDefault (line 8705) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function validateClose (line 8711) | function validateClose(open, close) {
  function SourceLocation (line 8721) | function SourceLocation(source, locInfo) {
  function id (line 8733) | function id(token) {
  function stripFlags (line 8741) | function stripFlags(open, close) {
  function stripComment (line 8748) | function stripComment(comment) {
  function preparePath (line 8752) | function preparePath(data, parts, loc) {
  function prepareMustache (line 8788) | function prepareMustache(path, params, hash, open, strip, locInfo) {
  function prepareRawBlock (line 8805) | function prepareRawBlock(openRawBlock, contents, close, locInfo) {
  function prepareBlock (line 8829) | function prepareBlock(openBlock, program, inverseAndProgram, close, inve...
  function prepareProgram (line 8874) | function prepareProgram(statements, loc) {
  function preparePartialBlock (line 8903) | function preparePartialBlock(open, program, close, locInfo) {
  function _interopRequireDefault (line 8931) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function Literal (line 8945) | function Literal(value) {
  function JavaScriptCompiler (line 8949) | function JavaScriptCompiler() {}
  function strictLookup (line 10071) | function strictLookup(requireTerminal, compiler, parts, startPartIndex, ...
  function popStack (line 10389) | function popStack(n) {
  function lex (line 10394) | function lex() {
  function strip (line 10650) | function strip(start, end) {
  function Parser (line 10830) | function Parser() {
    method constructor (line 23685) | constructor (client, socket, { exports }) {
    method setTimeout (line 23713) | setTimeout (value, type) {
    method resume (line 23735) | resume () {
    method readMore (line 23758) | readMore () {
    method execute (line 23768) | execute (data) {
    method destroy (line 23830) | destroy () {
    method onStatus (line 23845) | onStatus (buf) {
    method onMessageBegin (line 23849) | onMessageBegin () {
    method onHeaderField (line 23863) | onHeaderField (buf) {
    method onHeaderValue (line 23875) | onHeaderValue (buf) {
    method trackHeader (line 23897) | trackHeader (len) {
    method onUpgrade (line 23904) | onUpgrade (head) {
    method onHeadersComplete (line 23951) | onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {
    method onBody (line 24060) | onBody (buf) {
    method onMessageComplete (line 24092) | onMessageComplete () {
  function _interopRequireDefault (line 10853) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function print (line 10859) | function print(ast) {
  function PrintVisitor (line 10863) | function PrintVisitor() {
  function _interopRequireDefault (line 11044) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function Visitor (line 11050) | function Visitor() {
  function visitSubExpression (line 11159) | function visitSubExpression(mustache) {
  function visitBlock (line 11164) | function visitBlock(block) {
  function visitPartial (line 11170) | function visitPartial(partial) {
  function _interopRequireDefault (line 11192) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function WhitespaceControl (line 11198) | function WhitespaceControl() {
  function isPrevWhitespace (line 11334) | function isPrevWhitespace(body, i, isRoot) {
  function isNextWhitespace (line 11351) | function isNextWhitespace(body, i, isRoot) {
  function omitRight (line 11374) | function omitRight(body, i, multiple) {
  function omitLeft (line 11392) | function omitLeft(body, i, multiple) {
  function _interopRequireDefault (line 11422) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function registerDefaultDecorators (line 11428) | function registerDefaultDecorators(instance) {
  function Exception (line 11482) | function Exception(message, node) {
  function _interopRequireDefault (line 11556) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function registerDefaultHelpers (line 11586) | function registerDefaultHelpers(instance) {
  function moveHelperToHooks (line 11596) | function moveHelperToHooks(instance, helperName, keepHelper) {
  function _interopRequireDefault (line 11666) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function execIteration (line 11699) | function execIteration(field, index, last) {
  function _interopRequireDefault (line 11778) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 11811) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 11923) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 11977) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function createProtoAccessControl (line 11987) | function createProtoAccessControl(runtimeOptions) {
  function resultIsAllowed (line 12015) | function resultIsAllowed(result, protoAccessControl, propertyName) {
  function checkWhiteList (line 12023) | function checkWhiteList(protoAccessControlForType, propertyName) {
  function logUnexpecedPropertyAccessOnce (line 12034) | function logUnexpecedPropertyAccessOnce(propertyName) {
  function resetLoggedProperties (line 12041) | function resetLoggedProperties() {
  function wrapHelper (line 12060) | function wrapHelper(helper, transformOptionsFn) {
  function _interopRequireDefault (line 12186) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireWildcard (line 12190) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
  function checkRevision (line 12208) | function checkRevision(compilerInfo) {
  function template (line 12226) | function template(templateSpec, env) {
  function wrapProgram (line 12432) | function wrapProgram(container, i, fn, data, declaredBlockParams, blockP...
  function resolvePartial (line 12456) | function resolvePartial(partial, context, options) {
  function invokePartial (line 12471) | function invokePartial(partial, context, options) {
  function noop (line 12511) | function noop() {
  function lookupOwnProperty (line 12515) | function lookupOwnProperty(obj, name) {
  function initData (line 12521) | function initData(context, data) {
  function executeDecorators (line 12529) | function executeDecorators(fn, prog, container, depths, data, blockParam...
  function addHelpers (line 12538) | function addHelpers(mergedHelpers, helpers, container) {
  function passLookupPropertyOption (line 12546) | function passLookupPropertyOption(helper, container) {
  function SafeString (line 12566) | function SafeString(string) {
  function escapeChar (line 12608) | function escapeChar(chr) {
  function extend (line 12612) | function extend(obj /* , ...source */) {
  function indexOf (line 12652) | function indexOf(array, value) {
  function escapeExpression (line 12661) | function escapeExpression(string) {
  function isEmpty (line 12684) | function isEmpty(value) {
  function createFrame (line 12694) | function createFrame(object) {
  function blockParams (line 12700) | function blockParams(params, ids) {
  function appendContextPath (line 12705) | function appendContextPath(contextPath, id) {
  function extension (line 12732) | function extension(module, filename) {
  function isObject (line 12761) | function isObject(o) {
  function isPlainObject (line 12765) | function isPlainObject(o) {
  function _interopDefault (line 12800) | function _interopDefault (ex) { return (ex && (typeof ex === 'object') &...
  class Blob (line 12817) | class Blob {
    method constructor (line 12818) | constructor() {
    method size (line 12856) | get size() {
    method type (line 12859) | get type() {
    method text (line 12862) | text() {
    method arrayBuffer (line 12865) | arrayBuffer() {
    method stream (line 12870) | stream() {
    method toString (line 12877) | toString() {
    method slice (line 12880) | slice() {
  function FetchError (line 12937) | function FetchError(message, type, systemError) {
  function Body (line 12975) | function Body(body) {
  method body (line 13019) | get body() {
  method bodyUsed (line 13023) | get bodyUsed() {
  method arrayBuffer (line 13032) | arrayBuffer() {
  method blob (line 13043) | blob() {
  method json (line 13061) | json() {
  method text (line 13078) | text() {
  method buffer (line 13089) | buffer() {
  method textConverted (line 13099) | textConverted() {
  function consumeBody (line 13135) | function consumeBody() {
  function convertBody (line 13239) | function convertBody(buffer, headers) {
  function isURLSearchParams (line 13303) | function isURLSearchParams(obj) {
  function isBlob (line 13318) | function isBlob(obj) {
  function clone (line 13328) | function clone(instance) {
  function extractContentType (line 13362) | function extractContentType(body) {
  function getTotalBytes (line 13406) | function getTotalBytes(instance) {
  function writeToStream (line 13438) | function writeToStream(dest, instance) {
  function validateName (line 13469) | function validateName(name) {
  function validateValue (line 13476) | function validateValue(value) {
  function find (line 13491) | function find(map, name) {
  class Headers (line 13502) | class Headers {
    method constructor (line 13509) | constructor() {
    method get (line 13570) | get(name) {
    method forEach (line 13588) | forEach(callback) {
    method set (line 13611) | set(name, value) {
    method append (line 13627) | append(name, value) {
    method has (line 13646) | has(name) {
    method delete (line 13658) | delete(name) {
    method raw (line 13672) | raw() {
    method keys (line 13681) | keys() {
    method values (line 13690) | values() {
    method constructor (line 30508) | constructor (init = undefined) {
    method append (line 30527) | append (name, value) {
    method delete (line 30539) | delete (name) {
    method get (line 30584) | get (name) {
    method has (line 30606) | has (name) {
    method set (line 30628) | set (name, value) {
    method getSetCookie (line 30677) | getSetCookie () {
    method [kHeadersSortedMap] (line 30694) | get [kHeadersSortedMap] () {
    method keys (line 30740) | keys () {
    method values (line 30756) | values () {
    method entries (line 30772) | entries () {
    method forEach (line 30792) | forEach (callbackFn, thisArg = globalThis) {
  method [Symbol.iterator] (line 13701) | [Symbol.iterator]() {
  function getHeaders (line 13726) | function getHeaders(headers) {
  function createHeadersIterator (line 13741) | function createHeadersIterator(target, kind) {
  method next (line 13752) | next() {
  function exportNodeCompatibleHeaders (line 13794) | function exportNodeCompatibleHeaders(headers) {
  function createHeadersLenient (line 13814) | function createHeadersLenient(obj) {
  class Response (line 13850) | class Response {
    method constructor (line 13851) | constructor() {
    method url (line 13876) | get url() {
    method status (line 13880) | get status() {
    method ok (line 13887) | get ok() {
    method redirected (line 13891) | get redirected() {
    method statusText (line 13895) | get statusText() {
    method headers (line 13899) | get headers() {
    method clone (line 13908) | clone() {
    method error (line 34012) | static error () {
    method json (line 34029) | static json (data, init = {}) {
    method redirect (line 34060) | static redirect (url, status = 302) {
    method constructor (line 34107) | constructor (body = null, init = {}) {
    method type (line 34142) | get type () {
    method url (line 34150) | get url () {
    method redirected (line 34168) | get redirected () {
    method status (line 34177) | get status () {
    method ok (line 34185) | get ok () {
    method statusText (line 34194) | get statusText () {
    method headers (line 34203) | get headers () {
    method body (line 34210) | get body () {
    method bodyUsed (line 34216) | get bodyUsed () {
    method clone (line 34223) | clone () {
  function parseURL (line 13952) | function parseURL(urlStr) {
  function isRequest (line 13974) | function isRequest(input) {
  function isAbortSignal (line 13978) | function isAbortSignal(signal) {
  class Request (line 13990) | class Request {
    method constructor (line 13991) | constructor(input) {
    method method (line 14057) | get method() {
    method url (line 14061) | get url() {
    method headers (line 14065) | get headers() {
    method redirect (line 14069) | get redirect() {
    method signal (line 14073) | get signal() {
    method clone (line 14082) | clone() {
    method constructor (line 26898) | constructor (origin, {
    method onBodySent (line 27074) | onBodySent (chunk) {
    method onRequestSent (line 27084) | onRequestSent () {
    method onConnect (line 27098) | onConnect (abort) {
    method onHeaders (line 27110) | onHeaders (statusCode, headers, resume, statusText) {
    method onData (line 27125) | onData (chunk) {
    method onUpgrade (line 27137) | onUpgrade (statusCode, headers, socket) {
    method onComplete (line 27144) | onComplete (trailers) {
    method onError (line 27162) | onError (error) {
    method onFinally (line 27177) | onFinally () {
    method addHeader (line 27190) | addHeader (key, value) {
    method [kHTTP1BuildRequest] (line 27195) | static [kHTTP1BuildRequest] (origin, opts, handler) {
    method [kHTTP2BuildRequest] (line 27201) | static [kHTTP2BuildRequest] (origin, opts, handler) {
    method [kHTTP2CopyHeaders] (line 27229) | static [kHTTP2CopyHeaders] (raw) {
    method constructor (line 33068) | constructor (input, init = {}) {
    method method (line 33560) | get method () {
    method url (line 33568) | get url () {
    method headers (line 33578) | get headers () {
    method destination (line 33587) | get destination () {
    method referrer (line 33599) | get referrer () {
    method referrerPolicy (line 33621) | get referrerPolicy () {
    method mode (line 33631) | get mode () {
    method credentials (line 33641) | get credentials () {
    method cache (line 33649) | get cache () {
    method redirect (line 33660) | get redirect () {
    method integrity (line 33670) | get integrity () {
    method keepalive (line 33680) | get keepalive () {
    method isReloadNavigation (line 33689) | get isReloadNavigation () {
    method isHistoryNavigation (line 33699) | get isHistoryNavigation () {
    method signal (line 33710) | get signal () {
    method body (line 33717) | get body () {
    method bodyUsed (line 33723) | get bodyUsed () {
    method duplex (line 33729) | get duplex () {
    method clone (line 33736) | clone () {
  function getNodeRequestOptions (line 14111) | function getNodeRequestOptions(request) {
  function AbortError (line 14185) | function AbortError(message) {
  function fetch (line 14232) | function fetch(url, opts) {
  function fixResponseChunkedTransferBadEnding (line 14524) | function fixResponseChunkedTransferBadEnding(request, errorCallback) {
  function destroyStream (line 14552) | function destroyStream(stream, err) {
  function once (line 14610) | function once (fn) {
  function onceStrict (line 14620) | function onceStrict (fn) {
  function SAXParser (line 14695) | function SAXParser(strict, opt) {
  function F (line 14747) | function F() {}
  function checkBufferLength (line 14762) | function checkBufferLength(parser) {
  function clearBuffers (line 14798) | function clearBuffers(parser) {
  function flushBuffers (line 14804) | function flushBuffers(parser) {
  function createStream (line 14845) | function createStream(strict, opt) {
  function determineBufferEncoding (line 14849) | function determineBufferEncoding(data, isEnd) {
  function SAXStream (line 14882) | function SAXStream(strict, opt) {
  function isWhitespace (line 15045) | function isWhitespace(c) {
  function isQuote (line 15049) | function isQuote(c) {
  function isAttribEnd (line 15053) | function isAttribEnd(c) {
  function isMatch (line 15057) | function isMatch(regex, c) {
  function notMatch (line 15061) | function notMatch(regex, c) {
  function emit (line 15382) | function emit(parser, event, data) {
  function getDeclaredEncoding (line 15386) | function getDeclaredEncoding(body) {
  function normalizeEncodingName (line 15391) | function normalizeEncodingName(encoding) {
  function encodingsMatch (line 15399) | function encodingsMatch(detectedEncoding, declaredEncoding) {
  function validateXmlDeclarationEncoding (line 15414) | function validateXmlDeclarationEncoding(parser, data) {
  function emitNode (line 15439) | function emitNode(parser, nodeType, data) {
  function closeText (line 15444) | function closeText(parser) {
  function textopts (line 15450) | function textopts(opt, text) {
  function error (line 15456) | function error(parser, er) {
  function end (line 15473) | function end(parser) {
  function strictFail (line 15491) | function strictFail(parser, message) {
  function newTag (line 15500) | function newTag(parser) {
  function qname (line 15513) | function qname(name, attribute) {
  function attrib (line 15528) | function attrib(parser) {
  function openTag (line 15595) | function openTag(parser, selfClosing) {
  function closeTag (line 15678) | function closeTag(parser) {
  function parseEntity (line 15749) | function parseEntity(parser) {
  function beginWhiteSpace (line 15787) | function beginWhiteSpace(parser, c) {
  function charAt (line 15800) | function charAt(chunk, i) {
  function write (line 15808) | function write(chunk) {
  function ArraySet (line 16511) | function ArraySet() {
  function toVLQSigned (line 16690) | function toVLQSigned(aValue) {
  function fromVLQSigned (line 16702) | function fromVLQSigned(aValue) {
  function recursiveSearch (line 16866) | function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBia...
  function generatedPositionAfter (line 16974) | function generatedPositionAfter(mappingA, mappingB) {
  function MappingList (line 16989) | function MappingList() {
  function swap (line 17074) | function swap(ary, x, y) {
  function randomIntInRange (line 17088) | function randomIntInRange(low, high) {
  function doQuickSort (line 17104) | function doQuickSort(ary, comparator, p, r) {
  function SourceMapConsumer (line 17182) | function SourceMapConsumer(aSourceMap, aSourceMapURL) {
  function BasicSourceMapConsumer (line 17456) | function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
  function Mapping (line 17621) | function Mapping() {
  function IndexedSourceMapConsumer (line 18045) | function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
  function SourceMapGenerator (line 18341) | function SourceMapGenerator(aArgs) {
  function SourceNode (line 18787) | function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  function getNextLine (line 18824) | function getNextLine() {
  function addMappingWithCode (line 18902) | function addMappingWithCode(mapping, code) {
  function getArg (line 19190) | function getArg(aArgs, aName, aDefaultValue) {
  function urlParse (line 19204) | function urlParse(aUrl) {
  function urlGenerate (line 19219) | function urlGenerate(aParsedUrl) {
  function normalize (line 19252) | function normalize(aPath) {
  function join (line 19313) | function join(aRoot, aPath) {
  function relative (line 19366) | function relative(aRoot, aPath) {
  function identity (line 19405) | function identity (s) {
  function toSetString (line 19418) | function toSetString(aStr) {
  function fromSetString (line 19427) | function fromSetString(aStr) {
  function isProtoString (line 19436) | function isProtoString(s) {
  function compareByOriginalPositions (line 19476) | function compareByOriginalPositions(mappingA, mappingB, onlyCompareOrigi...
  function compareByGeneratedPositionsDeflated (line 19515) | function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCom...
  function strcmp (line 19545) | function strcmp(aStr1, aStr2) {
  function compareByGeneratedPositionsInflated (line 19569) | function compareByGeneratedPositionsInflated(mappingA, mappingB) {
  function parseSourceMapInput (line 19604) | function parseSourceMapInput(str) {
  function computeSourceURL (line 19613) | function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
  function normalize (line 19694) | function normalize(str) { // fix bug in v8
  function findStatus (line 19698) | function findStatus(val) {
  function countSymbols (line 19720) | function countSymbols(string) {
  function mapChars (line 19728) | function mapChars(domain_name, useSTD3, processing_option) {
  function validateLabel (line 19783) | function validateLabel(label, processing_option) {
  function processing (line 19816) | function processing(domain_name, useSTD3, processing_option) {
  function httpOverHttp (line 19910) | function httpOverHttp(options) {
  function httpsOverHttp (line 19916) | function httpsOverHttp(options) {
  function httpOverHttps (line 19924) | function httpOverHttps(options) {
  function httpsOverHttps (line 19930) | function httpsOverHttps(options) {
  function TunnelingAgent (line 19939) | function TunnelingAgent(options) {
  function onFree (line 19982) | function onFree() {
  function onCloseOrRemove (line 19986) | function onCloseOrRemove(err) {
  function onResponse (line 20026) | function onResponse(res) {
  function onUpgrade (line 20031) | function onUpgrade(res, socket, head) {
  function onConnect (line 20038) | function onConnect(res, socket, head) {
  function onError (line 20067) | function onError(cause) {
  function createSecureSocket (line 20097) | function createSecureSocket(options, cb) {
  function toOptions (line 20114) | function toOptions(host, port, localAddress) {
  function mergeOptions (line 20125) | function mergeOptions(target) {
  function makeDispatcher (line 20213) | function makeDispatcher (fn) {
  function defaultFactory (line 20360) | function defaultFactory (origin, opts) {
  class Agent (line 20366) | class Agent extends DispatcherBase {
    method constructor (line 20367) | constructor ({ factory = defaultFactory, maxRedirections = 0, connect,...
    method [kRunning] (line 20423) | get [kRunning] () {
    method [kDispatch] (line 20435) | [kDispatch] (opts, handler) {
    method [kClose] (line 20460) | async [kClose] () {
    method [kDestroy] (line 20473) | async [kDestroy] (err) {
  function abort (line 20501) | function abort (self) {
  function addSignal (line 20509) | function addSignal (self, signal) {
  function removeSignal (line 20530) | function removeSignal (self) {
  class ConnectHandler (line 20564) | class ConnectHandler extends AsyncResource {
    method constructor (line 20565) | constructor (opts, callback) {
    method onConnect (line 20590) | onConnect (abort, context) {
    method onHeaders (line 20599) | onHeaders () {
    method onUpgrade (line 20603) | onUpgrade (statusCode, rawHeaders, socket) {
    method onError (line 20625) | onError (err) {
  function connect (line 20639) | function connect (opts, callback) {
  class PipelineRequest (line 20688) | class PipelineRequest extends Readable {
    method constructor (line 20689) | constructor () {
    method _read (line 20695) | _read () {
    method _destroy (line 20704) | _destroy (err, callback) {
  class PipelineResponse (line 20711) | class PipelineResponse extends Readable {
    method constructor (line 20712) | constructor (resume) {
    method _read (line 20717) | _read () {
    method _destroy (line 20721) | _destroy (err, callback) {
  class PipelineHandler (line 20730) | class PipelineHandler extends AsyncResource {
    method constructor (line 20731) | constructor (opts, handler) {
    method onConnect (line 20815) | onConnect (abort, context) {
    method onHeaders (line 20828) | onHeaders (statusCode, rawHeaders, resume) {
    method onData (line 20890) | onData (chunk) {
    method onComplete (line 20895) | onComplete (trailers) {
    method onError (line 20900) | onError (err) {
  function pipeline (line 20907) | function pipeline (opts, handler) {
  class RequestHandler (line 20938) | class RequestHandler extends AsyncResource {
    method constructor (line 20939) | constructor (opts, callback) {
    method onConnect (line 20996) | onConnect (abort, context) {
    method onHeaders (line 21005) | onHeaders (statusCode, rawHeaders, resume, statusMessage) {
    method onData (line 21041) | onData (chunk) {
    method onComplete (line 21046) | onComplete (trailers) {
    method onError (line 21056) | onError (err) {
  function request (line 21084) | function request (opts, callback) {
  class StreamHandler (line 21127) | class StreamHandler extends AsyncResource {
    method constructor (line 21128) | constructor (opts, factory, callback) {
    method onConnect (line 21185) | onConnect (abort, context) {
    method onHeaders (line 21194) | onHeaders (statusCode, rawHeaders, resume, statusMessage) {
    method onData (line 21269) | onData (chunk) {
    method onComplete (line 21275) | onComplete (trailers) {
    method onError (line 21289) | onError (err) {
  function stream (line 21313) | function stream (opts, factory, callback) {
  class UpgradeHandler (line 21350) | class UpgradeHandler extends AsyncResource {
    method constructor (line 21351) | constructor (opts, callback) {
    method onConnect (line 21377) | onConnect (abort, context) {
    method onHeaders (line 21386) | onHeaders () {
    method onUpgrade (line 21390) | onUpgrade (statusCode, rawHeaders, socket) {
    method onError (line 21407) | onError (err) {
  function upgrade (line 21421) | function upgrade (opts, callback) {
  method constructor (line 21491) | constructor ({
  method destroy (line 21517) | destroy (err) {
  method emit (line 21534) | emit (ev, ...args) {
  method on (line 21545) | on (ev, ...args) {
  method addListener (line 21552) | addListener (ev, ...args) {
  method off (line 21556) | off (ev, ...args) {
  method removeListener (line 21567) | removeListener (ev, ...args) {
  method push (line 21571) | push (chunk) {
  method text (line 21580) | async text () {
  method json (line 21585) | async json () {
  method blob (line 21590) | async blob () {
  method arrayBuffer (line 21595) | async arrayBuffer () {
  method formData (line 21600) | async formData () {
  method bodyUsed (line 21606) | get bodyUsed () {
  method body (line 21611) | get body () {
  method dump (line 21623) | dump (opts) {
  function isLocked (line 21671) | function isLocked (self) {
  function isUnusable (line 21677) | function isUnusable (self) {
  function consume (line 21681) | async function consume (stream, type) {
  function consumeStart (line 21712) | function consumeStart (consume) {
  function consumeEnd (line 21738) | function consumeEnd (consume) {
  function consumePush (line 21769) | function consumePush (consume, chunk) {
  function consumeFinish (line 21774) | function consumeFinish (consume, err) {
  function getResolveErrorBodyCallback (line 21805) | async function getResolveErrorBodyCallback ({ callback, body, contentTyp...
  function getGreatestCommonDivisor (line 21880) | function getGreatestCommonDivisor (a, b) {
  function defaultFactory (line 21885) | function defaultFactory (origin, opts) {
  class BalancedPool (line 21889) | class BalancedPool extends PoolBase {
    method constructor (line 21890) | constructor (upstreams = [], { factory = defaultFactory, ...opts } = {...
    method addUpstream (line 21919) | addUpstream (upstream) {
    method _updateBalancedPoolStats (line 21959) | _updateBalancedPoolStats () {
    method removeUpstream (line 21963) | removeUpstream (upstream) {
    method upstreams (line 21979) | get upstreams () {
    method [kGetDispatcher] (line 21985) | [kGetDispatcher] () {
  class Cache (line 22080) | class Cache {
    method constructor (line 22087) | constructor () {
    method match (line 22095) | async match (request, options = {}) {
    method matchAll (line 22111) | async matchAll (request = undefined, options = {}) {
    method add (line 22179) | async add (request) {
    method addAll (line 22195) | async addAll (requests) {
    method put (line 22356) | async put (request, response) {
    method delete (line 22485) | async delete (request, options = {}) {
    method keys (line 22549) | async keys (request = undefined, options = {}) {
    method #batchCacheOperations (line 22628) | #batchCacheOperations (operations) {
    method #queryCache (line 22766) | #queryCache (requestQuery, options, targetStorage) {
    method #requestMatchesCachedItem (line 22790) | #requestMatchesCachedItem (requestQuery, request, response = null, opt...
  class CacheStorage (line 22904) | class CacheStorage {
    method constructor (line 22911) | constructor () {
    method match (line 22917) | async match (request, options = {}) {
    method has (line 22954) | async has (cacheName) {
    method open (line 22970) | async open (cacheName) {
    method delete (line 23002) | async delete (cacheName) {
    method keys (line 23015) | async keys () {
  function urlEquals (line 23075) | function urlEquals (A, B, excludeFragment = false) {
  function fieldValues (line 23087) | function fieldValues (header) {
  class Client (line 23247) | class Client extends DispatcherBase {
    method constructor (line 23253) | constructor (url, {
    method pipelining (line 23436) | get pipelining () {
    method pipelining (line 23440) | set pipelining (value) {
    method [kPending] (line 23445) | get [kPending] () {
    method [kRunning] (line 23449) | get [kRunning] () {
    method [kSize] (line 23453) | get [kSize] () {
    method [kConnected] (line 23457) | get [kConnected] () {
    method [kBusy] (line 23461) | get [kBusy] () {
    method [kConnect] (line 23471) | [kConnect] (cb) {
    method [kDispatch] (line 23476) | [kDispatch] (opts, handler) {
    method [kClose] (line 23501) | async [kClose] () {
    method [kDestroy] (line 23513) | async [kDestroy] (err) {
  function onHttp2SessionError (line 23547) | function onHttp2SessionError (err) {
  function onHttp2FrameError (line 23555) | function onHttp2FrameError (type, code, id) {
  function onHttp2SessionEnd (line 23564) | function onHttp2SessionEnd () {
  function onHTTP2GoAway (line 23569) | function onHTTP2GoAway (code) {
  function lazyllhttp (line 23609) | async function lazyllhttp () {
  class Parser (line 23684) | class Parser {
    method constructor (line 23685) | constructor (client, socket, { exports }) {
    method setTimeout (line 23713) | setTimeout (value, type) {
    method resume (line 23735) | resume () {
    method readMore (line 23758) | readMore () {
    method execute (line 23768) | execute (data) {
    method destroy (line 23830) | destroy () {
    method onStatus (line 23845) | onStatus (buf) {
    method onMessageBegin (line 23849) | onMessageBegin () {
    method onHeaderField (line 23863) | onHeaderField (buf) {
    method onHeaderValue (line 23875) | onHeaderValue (buf) {
    method trackHeader (line 23897) | trackHeader (len) {
    method onUpgrade (line 23904) | onUpgrade (head) {
    method onHeadersComplete (line 23951) | onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {
    method onBody (line 24060) | onBody (buf) {
    method onMessageComplete (line 24092) | onMessageComplete () {
  function onParserTimeout (line 24159) | function onParserTimeout (parser) {
  function onSocketReadable (line 24178) | function onSocketReadable () {
  function onSocketError (line 24185) | function onSocketError (err) {
  function onError (line 24205) | function onError (client, err) {
  function onSocketEnd (line 24225) | function onSocketEnd () {
  function onSocketClose (line 24239) | function onSocketClose () {
  function connect (line 24282) | async function connect (client) {
  function emitDrain (line 24447) | function emitDrain (client) {
  function resume (line 24452) | function resume (client, sync) {
  function _resume (line 24469) | function _resume (client, sync) {
  function shouldSendContentLength (line 24594) | function shouldSendContentLength (method) {
  function write (line 24598) | function write (client, request) {
  function writeH2 (line 24763) | function writeH2 (client, session, request) {
  function writeStream (line 25027) | function writeStream ({ h2stream, body, client, request, socket, content...
  function writeBlob (line 25142) | async function writeBlob ({ h2stream, body, client, request, socket, con...
  function writeIterable (line 25177) | async function writeIterable ({ h2stream, body, client, request, socket,...
  class AsyncWriter (line 25257) | class AsyncWriter {
    method constructor (line 25258) | constructor ({ socket, request, contentLength, client, expectsPayload,...
    method write (line 25270) | write (chunk) {
    method end (line 25333) | end () {
    method destroy (line 25380) | destroy (err) {
  function errorRequest (line 25392) | function errorRequest (client, request, err) {
  class CompatWeakRef (line 25416) | class CompatWeakRef {
    method constructor (line 25417) | constructor (value) {
    method deref (line 25421) | deref () {
  class CompatFinalizer (line 25428) | class CompatFinalizer {
    method constructor (line 25429) | constructor (finalizer) {
    method register (line 25433) | register (dispatcher, key) {
  function getCookies (line 25511) | function getCookies (headers) {
  function deleteCookie (line 25538) | function deleteCookie (headers, name, attributes) {
  function getSetCookies (line 25560) | function getSetCookies (headers) {
  function setCookie (line 25579) | function setCookie (headers, cookie) {
  function parseSetCookie (line 25690) | function parseSetCookie (header) {
  function parseUnparsedAttributes (line 25766) | function parseUnparsedAttributes (unparsedAttributes, cookieAttributeLis...
  function isCTLExcludingHtab (line 26008) | function isCTLExcludingHtab (value) {
  function validateCookieName (line 26035) | function validateCookieName (name) {
  function validateCookieValue (line 26072) | function validateCookieValue (value) {
  function validateCookiePath (line 26093) | function validateCookiePath (path) {
  function validateCookieDomain (line 26108) | function validateCookieDomain (domain) {
  function toIMFDate (line 26159) | function toIMFDate (date) {
  function validateCookieMaxAge (line 26192) | function validateCookieMaxAge (maxAge) {
  function stringify (line 26202) | function stringify (cookie) {
  method constructor (line 26303) | constructor (maxCachedSessions) {
  method get (line 26318) | get (sessionKey) {
  method set (line 26323) | set (sessionKey, session) {
  method constructor (line 26334) | constructor (maxCachedSessions) {
  method get (line 26339) | get (sessionKey) {
  method set (line 26343) | set (sessionKey, session) {
  function buildConnector (line 26359) | function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeo...
  function setupTimeout (line 26443) | function setupTimeout (onConnectTimeout, timeout) {
  function onConnectTimeout (line 26468) | function onConnectTimeout (socket) {
  class UndiciError (line 26609) | class UndiciError extends Error {
    method constructor (line 26610) | constructor (message) {
  class ConnectTimeoutError (line 26617) | class ConnectTimeoutError extends UndiciError {
    method constructor (line 26618) | constructor (message) {
  class HeadersTimeoutError (line 26627) | class HeadersTimeoutError extends UndiciError {
    method constructor (line 26628) | constructor (message) {
  class HeadersOverflowError (line 26637) | class HeadersOverflowError extends UndiciError {
    method constructor (line 26638) | constructor (message) {
  class BodyTimeoutError (line 26647) | class BodyTimeoutError extends UndiciError {
    method constructor (line 26648) | constructor (message) {
  class ResponseStatusCodeError (line 26657) | class ResponseStatusCodeError extends UndiciError {
    method constructor (line 26658) | constructor (message, statusCode, headers, body) {
  class InvalidArgumentError (line 26671) | class InvalidArgumentError extends UndiciError {
    method constructor (line 26672) | constructor (message) {
  class InvalidReturnValueError (line 26681) | class InvalidReturnValueError extends UndiciError {
    method constructor (line 26682) | constructor (message) {
  class RequestAbortedError (line 26691) | class RequestAbortedError extends UndiciError {
    method constructor (line 26692) | constructor (message) {
  class InformationalError (line 26701) | class InformationalError extends UndiciError {
    method constructor (line 26702) | constructor (message) {
  class RequestContentLengthMismatchError (line 26711) | class RequestContentLengthMismatchError extends UndiciError {
    method constructor (line 26712) | constructor (message) {
  class ResponseContentLengthMismatchError (line 26721) | class ResponseContentLengthMismatchError extends UndiciError {
    method constructor (line 26722) | constructor (message) {
  class ClientDestroyedError (line 26731) | class ClientDestroyedError extends UndiciError {
    method constructor (line 26732) | constructor (message) {
  class ClientClosedError (line 26741) | class ClientClosedError extends UndiciError {
    method constructor (line 26742) | constructor (message) {
  class SocketError (line 26751) | class SocketError extends UndiciError {
    method constructor (line 26752) | constructor (message, socket) {
  class NotSupportedError (line 26762) | class NotSupportedError extends UndiciError {
    method constructor (line 26763) | constructor (message) {
  class BalancedPoolMissingUpstreamError (line 26772) | class BalancedPoolMissingUpstreamError extends UndiciError {
    method constructor (line 26773) | constructor (message) {
  class HTTPParserError (line 26782) | class HTTPParserError extends Error {
    method constructor (line 26783) | constructor (message, code, data) {
  class ResponseExceededMaxSizeError (line 26792) | class ResponseExceededMaxSizeError extends UndiciError {
    method constructor (line 26793) | constructor (message) {
  class RequestRetryError (line 26802) | class RequestRetryError extends UndiciError {
    method constructor (line 26803) | constructor (message, code, { headers, data }) {
  class Request (line 26897) | class Request {
    method constructor (line 13991) | constructor(input) {
    method method (line 14057) | get method() {
    method url (line 14061) | get url() {
    method headers (line 14065) | get headers() {
    method redirect (line 14069) | get redirect() {
    method signal (line 14073) | get signal() {
    method clone (line 14082) | clone() {
    method constructor (line 26898) | constructor (origin, {
    method onBodySent (line 27074) | onBodySent (chunk) {
    method onRequestSent (line 27084) | onRequestSent () {
    method onConnect (line 27098) | onConnect (abort) {
    method onHeaders (line 27110) | onHeaders (statusCode, headers, resume, statusText) {
    method onData (line 27125) | onData (chunk) {
    method onUpgrade (line 27137) | onUpgrade (statusCode, headers, socket) {
    method onComplete (line 27144) | onComplete (trailers) {
    method onError (line 27162) | onError (error) {
    method onFinally (line 27177) | onFinally () {
    method addHeader (line 27190) | addHeader (key, value) {
    method [kHTTP1BuildRequest] (line 27195) | static [kHTTP1BuildRequest] (origin, opts, handler) {
    method [kHTTP2BuildRequest] (line 27201) | static [kHTTP2BuildRequest] (origin, opts, handler) {
    method [kHTTP2CopyHeaders] (line 27229) | static [kHTTP2CopyHeaders] (raw) {
    method constructor (line 33068) | constructor (input, init = {}) {
    method method (line 33560) | get method () {
    method url (line 33568) | get url () {
    method headers (line 33578) | get headers () {
    method destination (line 33587) | get destination () {
    method referrer (line 33599) | get referrer () {
    method referrerPolicy (line 33621) | get referrerPolicy () {
    method mode (line 33631) | get mode () {
    method credentials (line 33641) | get credentials () {
    method cache (line 33649) | get cache () {
    method redirect (line 33660) | get redirect () {
    method integrity (line 33670) | get integrity () {
    method keepalive (line 33680) | get keepalive () {
    method isReloadNavigation (line 33689) | get isReloadNavigation () {
    method isHistoryNavigation (line 33699) | get isHistoryNavigation () {
    method signal (line 33710) | get signal () {
    method body (line 33717) | get body () {
    method bodyUsed (line 33723) | get bodyUsed () {
    method duplex (line 33729) | get duplex () {
    method clone (line 33736) | clone () {
  function processHeaderValue (line 27246) | function processHeaderValue (key, val, skipAppend) {
  function processHeader (line 27260) | function processHeader (request, key, val, skipAppend = false) {
  function nop (line 27437) | function nop () {}
  function isStream (line 27439) | function isStream (obj) {
  function isBlobLike (line 27444) | function isBlobLike (object) {
  function buildURL (line 27454) | function buildURL (url, queryParams) {
  function parseURL (line 27468) | function parseURL (url) {
  function parseOrigin (line 27535) | function parseOrigin (url) {
  function getHostname (line 27545) | function getHostname (host) {
  function getServerName (line 27561) | function getServerName (host) {
  function deepClone (line 27576) | function deepClone (obj) {
  function isAsyncIterable (line 27580) | function isAsyncIterable (obj) {
  function isIterable (line 27584) | function isIterable (obj) {
  function bodyLength (line 27588) | function bodyLength (body) {
  function isDestroyed (line 27605) | function isDestroyed (stream) {
  function isReadableAborted (line 27609) | function isReadableAborted (stream) {
  function destroy (line 27614) | function destroy (stream, err) {
  function parseKeepAliveTimeout (line 27638) | function parseKeepAliveTimeout (val) {
  function headerNameToString (line 27648) | function headerNameToString (value) {
  function parseHeaders (line 27652) | function parseHeaders (headers, obj = {}) {
  function parseRawHeaders (line 27683) | function parseRawHeaders (headers) {
  function isBuffer (line 27710) | function isBuffer (buffer) {
  function validateHandler (line 27715) | function validateHandler (handler, method, upgrade) {
  function isDisturbed (line 27753) | function isDisturbed (body) {
  function isErrored (line 27764) | function isErrored (body) {
  function isReadable (line 27772) | function isReadable (body) {
  function getSocketInfo (line 27780) | function getSocketInfo (socket) {
  function ReadableStreamFrom (line 27800) | function ReadableStreamFrom (iterable) {
  function isFormDataLike (line 27837) | function isFormDataLike (object) {
  function throwIfAborted (line 27851) | function throwIfAborted (signal) {
  function addAbortListener (line 27865) | function addAbortListener (signal, listener) {
  function toUSVString (line 27879) | function toUSVString (val) {
  function parseRangeHeader (line 27891) | function parseRangeHeader (range) {
  class DispatcherBase (line 27968) | class DispatcherBase extends Dispatcher {
    method constructor (line 27969) | constructor () {
    method destroyed (line 27978) | get destroyed () {
    method closed (line 27982) | get closed () {
    method interceptors (line 27986) | get interceptors () {
    method interceptors (line 27990) | set interceptors (newInterceptors) {
    method close (line 28003) | close (callback) {
    method destroy (line 28049) | destroy (err, callback) {
    method [kInterceptedDispatch] (line 28098) | [kInterceptedDispatch] (opts, handler) {
    method dispatch (line 28112) | dispatch (opts, handler) {
  class Dispatcher (line 28156) | class Dispatcher extends EventEmitter {
    method dispatch (line 28157) | dispatch () {
    method close (line 28161) | close () {
    method destroy (line 28165) | destroy () {
  function extractBody (line 28219) | function extractBody (object, keepalive = false) {
  function safelyExtractBody (line 28439) | function safelyExtractBody (object, keepalive = false) {
  function cloneBody (line 28461) | function cloneBody (body) {
  function throwIfAborted (line 28507) | function throwIfAborted (state) {
  function bodyMixinMethods (line 28513) | function bodyMixinMethods (instance) {
  function mixinBody (line 28675) | function mixinBody (prototype) {
  function specConsumeBody (line 28685) | async function specConsumeBody (object, convertBytesToJSValue, instance) {
  function bodyUnusable (line 28730) | function bodyUnusable (body) {
  function utf8DecodeBytes (line 28741) | function utf8DecodeBytes (buffer) {
  function parseJSONFromBytes (line 28767) | function parseJSONFromBytes (bytes) {
  function bodyMimeType (line 28775) | function bodyMimeType (object) {
  function dataURLProcessor (line 28976) | function dataURLProcessor (dataURL) {
  function URLSerializer (line 29078) | function URLSerializer (url, excludeFragment = false) {
  function collectASequenceOfCodePoints (line 29095) | function collectASequenceOfCodePoints (condition, input, position) {
  function collectASequenceOfCodePointsFast (line 29119) | function collectASequenceOfCodePointsFast (char, input, position) {
  function stringPercentDecode (line 29134) | function stringPercentDecode (input) {
  function percentDecode (line 29144) | function percentDecode (input) {
  function parseMIMEType (line 29189) | function parseMIMEType (input) {
  function forgivingBase64 (line 29362) | function forgivingBase64 (data) {
  function collectAnHTTPQuotedString (line 29406) | function collectAnHTTPQuotedString (input, position, extractValue) {
  function serializeAMimeType (line 29481) | function serializeAMimeType (mimeType) {
  function isHTTPWhiteSpace (line 29526) | function isHTTPWhiteSpace (char) {
  function removeHTTPWhitespace (line 29534) | function removeHTTPWhitespace (str, leading = true, trailing = true) {
  function isASCIIWhitespace (line 29553) | function isASCIIWhitespace (char) {
  function removeASCIIWhitespace (line 29560) | function removeASCIIWhitespace (str, leading = true, trailing = true) {
  class File (line 29604) | class File extends Blob {
    method constructor (line 29605) | constructor (fileBits, fileName, options = {}) {
    method name (line 29669) | get name () {
    method lastModified (line 29675) | get lastModified () {
    method type (line 29681) | get type () {
  class FileLike (line 29688) | class FileLike {
    method constructor (line 29689) | constructor (blobLike, fileName, options = {}) {
    method stream (line 29736) | stream (...args) {
    method arrayBuffer (line 29742) | arrayBuffer (...args) {
    method slice (line 29748) | slice (...args) {
    method text (line 29754) | text (...args) {
    method size (line 29760) | get size () {
    method type (line 29766) | get type () {
    method name (line 29772) | get name () {
    method lastModified (line 29778) | get lastModified () {
  method [Symbol.toStringTag] (line 29784) | get [Symbol.toStringTag] () {
  method defaultValue (line 29826) | get defaultValue () {
  function processBlobParts (line 29856) | function processBlobParts (parts, options) {
  function convertLineEndingsNative (line 29906) | function convertLineEndingsNative (s) {
  function isFileLike (line 29924) | function isFileLike (object) {
  class FormData (line 29957) | class FormData {
    method constructor (line 29958) | constructor (form) {
    method append (line 29970) | append (name, value, filename = undefined) {
    method delete (line 29999) | delete (name) {
    method get (line 30011) | get (name) {
    method getAll (line 30030) | getAll (name) {
    method has (line 30046) | has (name) {
    method set (line 30058) | set (name, value, filename = undefined) {
    method entries (line 30101) | entries () {
    method keys (line 30111) | keys () {
    method values (line 30121) | values () {
    method forEach (line 30135) | forEach (callbackFn, thisArg = globalThis) {
  function makeEntry (line 30168) | function makeEntry (name, value, filename) {
  function getGlobalOrigin (line 30224) | function getGlobalOrigin () {
  function setGlobalOrigin (line 30228) | function setGlobalOrigin (newOrigin) {
  function isHTTPWhiteSpaceCharCode (line 30288) | function isHTTPWhiteSpaceCharCode (code) {
  function headerValueNormalize (line 30296) | function headerValueNormalize (potentialValue) {
  function fill (line 30308) | function fill (headers, object) {
  function appendHeader (line 30348) | function appendHeader (headers, name, value) {
  class HeadersList (line 30389) | class HeadersList {
    method constructor (line 30393) | constructor (init) {
    method contains (line 30405) | contains (name) {
    method clear (line 30414) | clear () {
    method append (line 30421) | append (name, value) {
    method set (line 30447) | set (name, value) {
    method delete (line 30463) | delete (name) {
    method get (line 30476) | get (name) {
    method entries (line 30493) | get entries () {
  method [Symbol.iterator] (line 30486) | * [Symbol.iterator] () {
  class Headers (line 30507) | class Headers {
    method constructor (line 13509) | constructor() {
    method get (line 13570) | get(name) {
    method forEach (line 13588) | forEach(callback) {
    method set (line 13611) | set(name, value) {
    method append (line 13627) | append(name, value) {
    method has (line 13646) | has(name) {
    method delete (line 13658) | delete(name) {
    method raw (line 13672) | raw() {
    method keys (line 13681) | keys() {
    method values (line 13690) | values() {
    method constructor (line 30508) | constructor (init = undefined) {
    method append (line 30527) | append (name, value) {
    method delete (line 30539) | delete (name) {
    method get (line 30584) | get (name) {
    method has (line 30606) | has (name) {
    method set (line 30628) | set (name, value) {
    method getSetCookie (line 30677) | getSetCookie () {
    method [kHeadersSortedMap] (line 30694) | get [kHeadersSortedMap] () {
    method keys (line 30740) | keys () {
    method values (line 30756) | values () {
    method entries (line 30772) | entries () {
    method forEach (line 30792) | forEach (callbackFn, thisArg = globalThis) {
  method [Symbol.for('nodejs.util.inspect.custom')] (line 30808) | [Symbol.for('nodejs.util.inspect.custom')] () {
  class Fetch (line 30937) | class Fetch extends EE {
    method constructor (line 30938) | constructor (dispatcher) {
    method terminate (line 30953) | terminate (reason) {
    method abort (line 30964) | abort (error) {
  function fetch (line 30991) | function fetch (input, init = {}) {
  function finalizeAndReportTiming (line 31124) | function finalizeAndReportTiming (response, initiatorType = 'other') {
  function markResourceTiming (line 31187) | function markResourceTiming (timingInfo, originalURL, initiatorType, glo...
  function abortFetch (line 31194) | function abortFetch (p, request, responseObject, error) {
  function fetching (line 31239) | function fetching ({
  function mainFetch (line 31394) | async function mainFetch (fetchParams, recursive = false) {
  function schemeFetch (line 31646) | function schemeFetch (fetchParams) {
  function finalizeResponse (line 31763) | function finalizeResponse (fetchParams, response) {
  function fetchFinale (line 31776) | function fetchFinale (fetchParams, response) {
  function httpFetch (line 31867) | async function httpFetch (fetchParams) {
  function httpRedirectFetch (line 31970) | function httpRedirectFetch (fetchParams, response) {
  function httpNetworkOrCacheFetch (line 32114) | async function httpNetworkOrCacheFetch (
  function httpNetworkFetch (line 32444) | async function httpNetworkFetch (
  class Request (line 33066) | class Request {
    method constructor (line 13991) | constructor(input) {
    method method (line 14057) | get method() {
    method url (line 14061) | get url() {
    method headers (line 14065) | get headers() {
    method redirect (line 14069) | get redirect() {
    method signal (line 14073) | get signal() {
    method clone (line 14082) | clone() {
    method constructor (line 26898) | constructor (origin, {
    method onBodySent (line 27074) | onBodySent (chunk) {
    method onRequestSent (line 27084) | onRequestSent () {
    method onConnect (line 27098) | onConnect (abort) {
    method onHeaders (line 27110) | onHeaders (statusCode, headers, resume, statusText) {
    method onData (line 27125) | onData (chunk) {
    method onUpgrade (line 27137) | onUpgrade (statusCode, headers, socket) {
    method onComplete (line 27144) | onComplete (trailers) {
    method onError (line 27162) | onError (error) {
    method onFinally (line 27177) | onFinally () {
    method addHeader (line 27190) | addHeader (key, value) {
    method [kHTTP1BuildRequest] (line 27195) | static [kHTTP1BuildRequest] (origin, opts, handler) {
    method [kHTTP2BuildRequest] (line 27201) | static [kHTTP2BuildRequest] (origin, opts, handler) {
    method [kHTTP2CopyHeaders] (line 27229) | static [kHTTP2CopyHeaders] (raw) {
    method constructor (line 33068) | constructor (input, init = {}) {
    method method (line 33560) | get method () {
    method url (line 33568) | get url () {
    method headers (line 33578) | get headers () {
    method destination (line 33587) | get destination () {
    method referrer (line 33599) | get referrer () {
    method referrerPolicy (line 33621) | get referrerPolicy () {
    method mode (line 33631) | get mode () {
    method credentials (line 33641) | get credentials () {
    method cache (line 33649) | get cache () {
    method redirect (line 33660) | get redirect () {
    method integrity (line 33670) | get integrity () {
    method keepalive (line 33680) | get keepalive () {
    method isReloadNavigation (line 33689) | get isReloadNavigation () {
    method isHistoryNavigation (line 33699) | get isHistoryNavigation () {
    method signal (line 33710) | get signal () {
    method body (line 33717) | get body () {
    method bodyUsed (line 33723) | get bodyUsed () {
    method duplex (line 33729) | get duplex () {
    method clone (line 33736) | clone () {
  function makeRequest (line 33778) | function makeRequest (init) {
  function cloneRequest (line 33826) | function cloneRequest (request) {
  class Response (line 34010) | class Response {
    method constructor (line 13851) | constructor() {
    method url (line 13876) | get url() {
    method status (line 13880) | get status() {
    method ok (line 13887) | get ok() {
    method redirected (line 13891) | get redirected() {
    method statusText (line 13895) | get statusText() {
    method headers (line 13899) | get headers() {
    method clone (line 13908) | clone() {
    method error (line 34012) | static error () {
    method json (line 34029) | static json (data, init = {}) {
    method redirect (line 34060) | static redirect (url, status = 302) {
    method constructor (line 34107) | constructor (body = null, init = {}) {
    method type (line 34142) | get type () {
    method url (line 34150) | get url () {
    method redirected (line 34168) | get redirected () {
    method status (line 34177) | get status () {
    method ok (line 34185) | get ok () {
    method statusText (line 34194) | get statusText () {
    method headers (line 34203) | get headers () {
    method body (line 34210) | get body () {
    method bodyUsed (line 34216) | get bodyUsed () {
    method clone (line 34223) | clone () {
  function cloneResponse (line 34276) | function cloneResponse (response) {
  function makeResponse (line 34302) | function makeResponse (init) {
  function makeNetworkError (line 34321) | function makeNetworkError (reason) {
  function makeFilteredResponse (line 34333) | function makeFilteredResponse (response, state) {
  function filterResponse (line 34352) | function filterResponse (response, type) {
  function makeAppropriateNetworkError (line 34406) | function makeAppropriateNetworkError (fetchParams, err = null) {
  function initializeResponse (line 34418) | function initializeResponse (response, init, body) {
  function responseURL (line 34597) | function responseURL (response) {
  function responseLocationURL (line 34607) | function responseLocationURL (response, requestFragment) {
  function requestCurrentURL (line 34634) | function requestCurrentURL (request) {
  function requestBadPort (line 34638) | function requestBadPort (request) {
  function isErrorLike (line 34652) | function isErrorLike (object) {
  function isValidReasonPhrase (line 34665) | function isValidReasonPhrase (statusText) {
  function isTokenCharCode (line 34687) | function isTokenCharCode (c) {
  function isValidHTTPToken (line 34717) | function isValidHTTPToken (characters) {
  function isValidHeaderName (line 34733) | function isValidHeaderName (potentialValue) {
  function isValidHeaderValue (line 34741) | function isValidHeaderValue (potentialValue) {
  function setRequestReferrerPolicyOnRedirect (line 34765) | function setRequestReferrerPolicyOnRedirect (request, actualResponse) {
  function crossOriginResourcePolicyCheck (line 34805) | function crossOriginResourcePolicyCheck () {
  function corsCheck (line 34811) | function corsCheck () {
  function TAOCheck (line 34817) | function TAOCheck () {
  function appendFetchMetadata (line 34822) | function appendFetchMetadata (httpRequest) {
  function appendRequestOriginHeader (line 34848) | function appendRequestOriginHeader (request) {
  function coarsenedSharedCurrentTime (line 34891) | function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {
  function createOpaqueTimingInfo (line 34897) | function createOpaqueTimingInfo (timingInfo) {
  function makePolicyContainer (line 34914) | function makePolicyContainer () {
  function clonePolicyContainer (line 34922) | function clonePolicyContainer (policyContainer) {
  function determineRequestsReferrer (line 34929) | function determineRequestsReferrer (request) {
  function stripURLForReferrer (line 35028) | function stripURLForReferrer (url, originOnly) {
  function isURLPotentiallyTrustworthy (line 35059) | function isURLPotentiallyTrustworthy (url) {
  function bytesMatch (line 35105) | function bytesMatch (bytes, metadataList) {
  function parseMetadata (line 35177) | function parseMetadata (metadata) {
  function getStrongestMetadata (line 35227) | function getStrongestMetadata (metadataList) {
  function filterMetadataListByAlgorithm (line 35256) | function filterMetadataListByAlgorithm (metadataList, algorithm) {
  function compareBase64Mixed (line 35281) | function compareBase64Mixed (actualValue, expectedValue) {
  function tryUpgradeRequestToAPotentiallyTrustworthyURL (line 35301) | function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {
  function sameOrigin (line 35310) | function sameOrigin (A, B) {
  function createDeferredPromise (line 35326) | function createDeferredPromise () {
  function isAborted (line 35337) | function isAborted (fetchParams) {
  function isCancelled (line 35341) | function isCancelled (fetchParams) {
  function normalizeMethod (line 35368) | function normalizeMethod (method) {
  function serializeJavascriptValueToJSONString (line 35373) | function serializeJavascriptValueToJSONString (value) {
  function makeIterator (line 35398) | function makeIterator (iterator, name, kind) {
  function iteratorResult (line 35461) | function iteratorResult (pair, kind) {
  function fullyReadBody (line 35505) | async function fullyReadBody (body, processBody, processBodyError) {
  function isReadableStreamLike (line 35541) | function isReadableStreamLike (stream) {
  function isomorphicDecode (line 35558) | function isomorphicDecode (input) {
  function readableStreamClose (line 35573) | function readableStreamClose (controller) {
  function isomorphicEncode (line 35588) | function isomorphicEncode (input) {
  function readAllBytes (line 35605) | async function readAllBytes (reader) {
  function urlIsLocal (line 35635) | function urlIsLocal (url) {
  function urlHasHttpsScheme (line 35646) | function urlHasHttpsScheme (url) {
  function urlIsHttpHttpsScheme (line 35658) | function urlIsHttpHttpsScheme (url) {
  function getEncoding (line 36386) | function getEncoding (label) {
  class FileReader (line 36695) | class FileReader extends EventTarget {
    method constructor (line 36696) | constructor () {
    method readAsArrayBuffer (line 36716) | readAsArrayBuffer (blob) {
    method readAsBinaryString (line 36732) | readAsBinaryString (blob) {
    method readAsText (line 36749) | readAsText (blob, encoding = undefined) {
    method readAsDataURL (line 36769) | readAsDataURL (blob) {
    method abort (line 36784) | abort () {
    method readyState (line 36821) | get readyState () {
    method result (line 36834) | get result () {
    method error (line 36845) | get error () {
    method onloadend (line 36853) | get onloadend () {
    method onloadend (line 36859) | set onloadend (fn) {
    method onerror (line 36874) | get onerror () {
    method onerror (line 36880) | set onerror (fn) {
    method onloadstart (line 36895) | get onloadstart () {
    method onloadstart (line 36901) | set onloadstart (fn) {
    method onprogress (line 36916) | get onprogress () {
    method onprogress (line 36922) | set onprogress (fn) {
    method onload (line 36937) | get onload () {
    method onload (line 36943) | set onload (fn) {
    method onabort (line 36958) | get onabort () {
    method onabort (line 36964) | set onabort (fn) {
  class ProgressEvent (line 37039) | class ProgressEvent extends Event {
    method constructor (line 37040) | constructor (type, eventInitDict = {}) {
    method lengthComputable (line 37053) | get lengthComputable () {
    method loaded (line 37059) | get loaded () {
    method total (line 37065) | get total () {
  function readOperation (line 37165) | function readOperation (fr, blob, type, encodingName) {
  function fireAProgressEvent (line 37331) | function fireAProgressEvent (e, reader) {
  function packageData (line 37349) | function packageData (bytes, type, mimeType, encodingName) {
  function decode (line 37451) | function decode (ioQueue, encoding) {
  function BOMSniffing (line 37483) | function BOMSniffing (ioQueue) {
  function combineByteSequences (line 37507) | function combineByteSequences (sequences) {
  function setGlobalDispatcher (line 37546) | function setGlobalDispatcher (agent) {
  function getGlobalDispatcher (line 37558) | function getGlobalDispatcher () {
  method constructor (line 37577) | constructor (handler) {
  method onConnect (line 37581) | onConnect (...args) {
  method onError (line 37585) | onError (...args) {
  method onUpgrade (line 37589) | onUpgrade (...args) {
  method onHeaders (line 37593) | onHeaders (...args) {
  method onData (line 37597) | onData (...args) {
  method onComplete (line 37601) | onComplete (...args) {
  method onBodySent (line 37605) | onBodySent (...args) {
  class BodyAsyncIterable (line 37629) | class BodyAsyncIterable {
    method constructor (line 37630) | constructor (body) {
  method [Symbol.asyncIterator] (line 37635) | async * [Symbol.asyncIterator] () {
  class RedirectHandler (line 37642) | class RedirectHandler {
    method constructor (line 37643) | constructor (dispatch, maxRedirections, opts, handler) {
    method onConnect (line 37692) | onConnect (abort) {
    method onUpgrade (line 37697) | onUpgrade (statusCode, headers, socket) {
    method onError (line 37701) | onError (error) {
    method onHeaders (line 37705) | onHeaders (statusCode, headers, resume, statusText) {
    method onData (line 37738) | onData (chunk) {
    method onComplete (line 37762) | onComplete (trailers) {
    method onBodySent (line 37782) | onBodySent (chunk) {
  function parseLocation (line 37789) | function parseLocation (statusCode, headers) {
  function shouldRemoveHeader (line 37802) | function shouldRemoveHeader (header, removeContent, unknownOrigin) {
  function cleanRequestHeaders (line 37817) | function cleanRequestHeaders (headers, removeContent, unknownOrigin) {
  function calculateRetryAfterHeader (line 37851) | function calculateRetryAfterHeader (retryAfter) {
  class RetryHandler (line 37858) | class RetryHandler {
    method constructor (line 37859) | constructor (opts, handlers) {
    method onRequestSent (line 37921) | onRequestSent () {
    method onUpgrade (line 37927) | onUpgrade (statusCode, headers, socket) {
    method onConnect (line 37933) | onConnect (abort) {
    method onBodySent (line 37941) | onBodySent (chunk) {
    method [kRetryHandlerDefaultRetry] (line 37945) | static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
    method onHeaders (line 38013) | onHeaders (statusCode, rawHeaders, resume, statusMessage) {
    method onData (line 38131) | onData (chunk) {
    method onComplete (line 38137) | onComplete (rawTrailers) {
    method onError (line 38142) | onError (err) {
  function createRedirectInterceptor (line 38193) | function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirec...
  function enumToMap (line 38522) | function enumToMap(obj) {
  class FakeWeakRef (line 38564) | class FakeWeakRef {
    method constructor (line 38565) | constructor (value) {
    method deref (line 38569) | deref () {
  class MockAgent (line 38574) | class MockAgent extends Dispatcher {
    method constructor (line 38575) | constructor (opts) {
    method get (line 38592) | get (origin) {
    method dispatch (line 38602) | dispatch (opts, handler) {
    method close (line 38608) | async close () {
    method deactivate (line 38613) | deactivate () {
    method activate (line 38617) | activate () {
    method enableNetConnect (line 38621) | enableNetConnect (matcher) {
    method disableNetConnect (line 38635) | disableNetConnect () {
    method isMockActive (line 38641) | get isMockActive () {
    method [kMockAgentSet] (line 38645) | [kMockAgentSet] (origin, dispatcher) {
    method [kFactory] (line 38649) | [kFactory] (origin) {
    method [kMockAgentGet] (line 38656) | [kMockAgentGet] (origin) {
    method [kGetNetConnect] (line 38682) | [kGetNetConnect] () {
    method pendingInterceptors (line 38686) | pendingInterceptors () {
    method assertNoPendingInterceptors (line 38694) | assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new Pend...
  class MockClient (line 38741) | class MockClient extends Client {
    method constructor (line 38742) | constructor (origin, opts) {
    method intercept (line 38767) | intercept (opts) {
    method [kClose] (line 38771) | async [kClose] () {
  method [Symbols.kConnected] (line 38760) | get [Symbols.kConnected] () {
  class MockNotMatchedError (line 38791) | class MockNotMatchedError extends UndiciError {
    method constructor (line 38792) | constructor (message) {
  class MockScope (line 38829) | class MockScope {
    method constructor (line 38830) | constructor (mockDispatch) {
    method delay (line 38837) | delay (waitInMs) {
    method persist (line 38849) | persist () {
    method times (line 38857) | times (repeatTimes) {
  class MockInterceptor (line 38870) | class MockInterceptor {
    method constructor (line 38871) | constructor (opts, mockDispatches) {
    method createMockScopeDispatchData (line 38904) | createMockScopeDispatchData (statusCode, data, responseOptions = {}) {
    method validateReplyParameters (line 38913) | validateReplyParameters (statusCode, data, responseOptions) {
    method reply (line 38928) | reply (replyData) {
    method replyWithError (line 38974) | replyWithError (error) {
    method defaultReplyHeaders (line 38986) | defaultReplyHeaders (headers) {
    method defaultReplyTrailers (line 38998) | defaultReplyTrailers (trailers) {
    method replyContentLength (line 39010) | replyContentLength () {
  class MockPool (line 39047) | class MockPool extends Pool {
    method constructor (line 39048) | constructor (origin, opts) {
    method intercept (line 39073) | intercept (opts) {
    method [kClose] (line 39077) | async [kClose] () {
  method [Symbols.kConnected] (line 39066) | get [Symbols.kConnected] () {
  function matchValue (line 39142) | function matchValue (match, value) {
  function lowerCaseEntries (line 39155) | function lowerCaseEntries (headers) {
  function getHeaderByName (line 39167) | function getHeaderByName (headers, key) {
  function buildHeadersFromArray (line 39184) | function buildHeadersFromArray (headers) { // fetch HeadersList
  function matchHeaders (line 39193) | function matchHeaders (mockDispatch, headers) {
  function safeUrl (line 39217) | function safeUrl (path) {
  function matchKey (line 39233) | function matchKey (mockDispatch, { path, method, body, headers }) {
  function getResponseData (line 39241) | function getResponseData (data) {
  function getMockDispatch (line 39251) | function getMockDispatch (mockDispatches, key) {
  function addMockDispatch (line 39282) | function addMockDispatch (mockDispatches, key, data) {
  function deleteMockDispatch (line 39290) | function deleteMockDispatch (mockDispatches, key) {
  function buildKey (line 39302) | function buildKey (opts) {
  function generateKeyValues (line 39313) | function generateKeyValues (data) {
  function getStatusText (line 39325) | function getStatusText (statusCode) {
  function getResponse (line 39329) | async function getResponse (body) {
  function mockDispatch (line 39340) | function mockDispatch (opts, handler) {
  function buildMockDispatch (line 39412) | function buildMockDispatch () {
  function checkNetConnect (line 39442) | function checkNetConnect (netConnect, origin) {
  function buildMockOptions (line 39452) | function buildMockOptions (opts) {
  method constructor (line 39492) | constructor ({ disableColors } = {}) {
  method format (line 39507) | format (pendingInterceptors) {
  method constructor (line 39548) | constructor (singular, plural) {
  method pluralize (line 39553) | pluralize (count) {
  class FixedCircularBuffer (line 39626) | class FixedCircularBuffer {
    method constructor (line 39627) | constructor() {
    method isEmpty (line 39634) | isEmpty() {
    method isFull (line 39638) | isFull() {
    method push (line 39642) | push(data) {
    method shift (line 39647) | shift() {
  method constructor (line 39658) | constructor() {
  method isEmpty (line 39662) | isEmpty() {
  method push (line 39666) | push(data) {
  method shift (line 39675) | shift() {
  class PoolBase (line 39713) | class PoolBase extends DispatcherBase {
    method constructor (line 39714) | constructor () {
    method [kBusy] (line 39766) | get [kBusy] () {
    method [kConnected] (line 39770) | get [kConnected] () {
    method [kFree] (line 39774) | get [kFree] () {
    method [kPending] (line 39778) | get [kPending] () {
    method [kRunning] (line 39786) | get [kRunning] () {
    method [kSize] (line 39794) | get [kSize] () {
    method stats (line 39802) | get stats () {
    method [kClose] (line 39806) | async [kClose] () {
    method [kDestroy] (line 39816) | async [kDestroy] (err) {
    method [kDispatch] (line 39828) | [kDispatch] (opts, handler) {
    method [kAddClient] (line 39843) | [kAddClient] (client) {
    method [kRemoveClient] (line 39863) | [kRemoveClient] (client) {
  class PoolStats (line 39897) | class PoolStats {
    method constructor (line 39898) | constructor (pool) {
    method connected (line 39902) | get connected () {
    method free (line 39906) | get free () {
    method pending (line 39910) | get pending () {
    method queued (line 39914) | get queued () {
    method running (line 39918) | get running () {
    method size (line 39922) | get size () {
  function defaultFactory (line 39957) | function defaultFactory (origin, opts) {
  class Pool (line 39961) | class Pool extends PoolBase {
    method constructor (line 39962) | constructor (origin, {
    method [kGetDispatcher] (line 40027) | [kGetDispatcher] () {
  function defaultProtocolPort (line 40069) | function defaultProtocolPort (protocol) {
  function buildProxyOptions (line 40073) | function buildProxyOptions (opts) {
  function defaultFactory (line 40088) | function defaultFactory (origin, opts) {
  class ProxyAgent (line 40092) | class ProxyAgent extends DispatcherBase {
    method constructor (line 40093) | constructor (opts) {
    method dispatch (line 40176) | dispatch (opts, handler) {
    method [kClose] (line 40192) | async [kClose] () {
    method [kDestroy] (line 40197) | async [kDestroy] () {
  function buildHeaders (line 40207) | function buildHeaders (headers) {
  function throwIfProxyAuthIsSent (line 40232) | function throwIfProxyAuthIsSent (headers) {
  function onTimeout (line 40256) | function onTimeout () {
  function refreshTimeout (line 40289) | function refreshTimeout () {
  class Timeout (line 40301) | class Timeout {
    method constructor (line 40302) | constructor (callback, delay, opaque) {
    method refresh (line 40316) | refresh () {
    method clear (line 40327) | clear () {
  method setTimeout (line 40333) | setTimeout (callback, delay, opaque) {
  method clearTimeout (line 40338) | clearTimeout (timeout) {
  function establishWebSocketConnection (line 40393) | function establishWebSocketConnection (url, protocols, ws, onEstablish, ...
  function onSocketData (line 40565) | function onSocketData (chunk) {
  function onSocketClose (line 40575) | function onSocketClose () {
  function onSocketError (line 40630) | function onSocketError (error) {
  class MessageEvent (line 40721) | class MessageEvent extends Event {
    method constructor (line 40724) | constructor (type, eventInitDict = {}) {
    method data (line 40735) | get data () {
    method origin (line 40741) | get origin () {
    method lastEventId (line 40747) | get lastEventId () {
    method source (line 40753) | get source () {
    method ports (line 40759) | get ports () {
    method initMessageEvent (line 40769) | initMessageEvent (
  class CloseEvent (line 40792) | class CloseEvent extends Event {
    method constructor (line 40795) | constructor (type, eventInitDict = {}) {
    method wasClean (line 40806) | get wasClean () {
    method code (line 40812) | get code () {
    method reason (line 40818) | get reason () {
  class ErrorEvent (line 40826) | class ErrorEvent extends Event {
    method constructor (line 40829) | constructor (type, eventInitDict) {
    method message (line 40840) | get message () {
    method filename (line 40846) | get filename () {
    method lineno (line 40852) | get lineno () {
    method colno (line 40858) | get colno () {
    method error (line 40864) | get error () {
  method defaultValue (line 40957) | get defaultValue () {
  class WebsocketFrameSend (line 41035) | class WebsocketFrameSend {
    method constructor (line 41039) | constructor (data) {
    method createFrame (line 41044) | createFrame (opcode) {
  class ByteParser (line 41122) | class ByteParser extends Writable {
    method constructor (line 41131) | constructor (ws) {
    method _write (line 41141) | _write (chunk, _, callback) {
    method run (line 41153) | run (callback) {
    method consume (line 41360) | consume (n) {
    method parseCloseBody (line 41397) | parseCloseBody (onlyCode, data) {
    method closingInfo (line 41440) | get closingInfo () {
  function isEstablished (line 41487) | function isEstablished (ws) {
  function isClosing (line 41497) | function isClosing (ws) {
  function isClosed (line 41507) | function isClosed (ws) {
  function fireEvent (line 41517) | function fireEvent (e, target, eventConstructor = Event, eventInitDict) {
  function websocketMessageReceived (line 41539) | function websocketMessageReceived (ws, type, data) {
  function isValidSubprotocol (line 41586) | function isValidSubprotocol (protocol) {
  function isValidStatusCode (line 41634) | function isValidStatusCode (code) {
  function failWebsocketConnection (line 41650) | function failWebsocketConnection (ws, reason) {
  class WebSocket (line 41711) | class WebSocket extends EventTarget {
    method constructor (line 41727) | constructor (url, protocols = []) {
    method close (line 41833) | close (code = undefined, reason = undefined) {
    method send (line 41936) | send (data) {
    method readyState (line 42051) | get readyState () {
    method bufferedAmount (line 42058) | get bufferedAmount () {
    method url (line 42064) | get url () {
    method extensions (line 42071) | get extensions () {
    method protocol (line 42077) | get protocol () {
    method onopen (line 42083) | get onopen () {
    method onopen (line 42089) | set onopen (fn) {
    method onerror (line 42104) | get onerror () {
    method onerror (line 42110) | set onerror (fn) {
    method onclose (line 42125) | get onclose () {
    method onclose (line 42131) | set onclose (fn) {
    method onmessage (line 42146) | get onmessage () {
    method onmessage (line 42152) | set onmessage (fn) {
    method binaryType (line 42167) | get binaryType () {
    method binaryType (line 42173) | set binaryType (type) {
    method #onConnectionEstablished (line 42186) | #onConnectionEstablished (response) {
  method defaultValue (line 42283) | get defaultValue () {
  method defaultValue (line 42290) | get defaultValue () {
  function getUserAgent (line 42337) | function getUserAgent() {
  function sign (line 42364) | function sign(x) {
  function evenRound (line 42368) | function evenRound(x) {
  function createNumberConversion (line 42377) | function createNumberConversion(bitLength, typeOpts) {
  method constructor (line 42560) | constructor(constructorArgs) {
  method href (line 42582) | get href() {
  method href (line 42586) | set href(v) {
  method origin (line 42595) | get origin() {
  method protocol (line 42599) | get protocol() {
  method protocol (line 42603) | set protocol(v) {
  method username (line 42607) | get username() {
  method username (line 42611) | set username(v) {
  method password (line 42619) | get password() {
  method password (line 42623) | set password(v) {
  method host (line 42631) | get host() {
  method host (line 42645) | set host(v) {
  method hostname (line 42653) | get hostname() {
  method hostname (line 42661) | set hostname(v) {
  method port (line 42669) | get port() {
  method port (line 42677) | set port(v) {
  method pathname (line 42689) | get pathname() {
  method pathname (line 42701) | set pathname(v) {
  method search (line 42710) | get search() {
  method search (line 42718) | set search(v) {
  method hash (line 42733) | get hash() {
  method hash (line 42741) | set hash(v) {
  method toJSON (line 42752) | toJSON() {
  function URL (line 42772) | function URL(url) {
  method get (line 42802) | get() {
  method set (line 42805) | set(V) {
  method get (line 42821) | get() {
  method get (line 42829) | get() {
  method set (line 42832) | set(V) {
  method get (line 42841) | get() {
  method set (line 42844) | set(V) {
  method get (line 42853) | get() {
  method set (line 42856) | set(V) {
  method get (line 42865) | get() {
  method set (line 42868) | set(V) {
  method get (line 42877) | get() {
  method set (line 42880) | set(V) {
  method get (line 42889) | get() {
  method set (line 42892) | set(V) {
  method get (line 42901) | get() {
  method set (line 42904) | set(V) {
  method get (line 42913) | get() {
  method set (line 42916) | set(V) {
  method get (line 42925) | get() {
  method set (line 42928) | set(V) {
  method is (line 42938) | is(obj) {
  method create (line 42941) | create(constructorArgs, privateData) {
  method setup (line 42946) | setup(obj, constructorArgs, privateData) {
  function countSymbols (line 43003) | function countSymbols(str) {
  function at (line 43007) | function at(input, idx) {
  function isASCIIDigit (line 43012) | function isASCIIDigit(c) {
  function isASCIIAlpha (line 43016) | function isASCIIAlpha(c) {
  function isASCIIAlphanumeric (line 43020) | function isASCIIAlphanumeric(c) {
  function isASCIIHex (line 43024) | function isASCIIHex(c) {
  function isSingleDot (line 43028) | function isSingleDot(buffer) {
  function isDoubleDot (line 43032) | function isDoubleDot(buffer) {
  function isWindowsDriveLetterCodePoints (line 43037) | function isWindowsDriveLetterCodePoints(cp1, cp2) {
  function isWindowsDriveLetterString (line 43041) | function isWindowsDriveLetterString(string) {
  function isNormalizedWindowsDriveLetterString (line 43045) | function isNormalizedWindowsDriveLetterString(string) {
  function containsForbiddenHostCodePoint (line 43049) | function containsForbiddenHostCodePoint(string) {
  function containsForbiddenHostCodePointExcludingPercent (line 43053) | function containsForbiddenHostCodePointExcludingPercent(string) {
  function isSpecialScheme (line 43057) | function isSpecialScheme(scheme) {
  function isSpecial (line 43061) | function isSpecial(url) {
  function defaultPort (line 43065) | function defaultPort(scheme) {
  function percentEncode (line 43069) | function percentEncode(c) {
  function utf8PercentEncode (line 43078) | function utf8PercentEncode(c) {
  function utf8PercentDecode (line 43090) | function utf8PercentDecode(str) {
  function isC0ControlPercentEncode (line 43106) | function isC0ControlPercentEncode(c) {
  function isPathPercentEncode (line 43111) | function isPathPercentEncode(c) {
  function isUserinfoPercentEncode (line 43117) | function isUserinfoPercentEncode(c) {
  function percentEncodeChar (line 43121) | function percentEncodeChar(c, encodeSetPredicate) {
  function parseIPv4Number (line 43131) | function parseIPv4Number(input) {
  function parseIPv4 (line 43154) | function parseIPv4(input) {
  function serializeIPv4 (line 43199) | function serializeIPv4(address) {
  function parseIPv6 (line 43214) | function parseIPv6(input) {
  function serializeIPv6 (line 43343) | function serializeIPv6(address) {
  function parseHost (line 43373) | function parseHost(input, isSpecialArg) {
  function parseOpaqueHost (line 43404) | function parseOpaqueHost(input) {
  function findLongestZeroSequence (line 43417) | function findLongestZeroSequence(arr) {
  function serializeHost (line 43452) | function serializeHost(host) {
  function trimControlChars (line 43465) | function trimControlChars(url) {
  function trimTabAndNewline (line 43469) | function trimTabAndNewline(url) {
  function shortenPath (line 43473) | function shortenPath(url) {
  function includesCredentials (line 43485) | function includesCredentials(url) {
  function cannotHaveAUsernamePasswordPort (line 43489) | function cannotHaveAUsernamePasswordPort(url) {
  function isNormalizedWindowsDriveLetter (line 43493) | function isNormalizedWindowsDriveLetter(string) {
  function URLStateMachine (line 43497) | function URLStateMachine(input, base, encodingOverride, url, stateOverri...
  function serializeURL (line 44155) | function serializeURL(url, excludeFragment) {
  function serializeOrigin (line 44196) | function serializeOrigin(tuple) {
  function wrappy (line 44325) | function wrappy (fn, cb) {
  function validateOptions (line 44402) | function validateOptions(userOptions) {
  function writeIndentation (line 44446) | function writeIndentation(options, depth, firstLine) {
  function writeAttributes (line 44450) | function writeAttributes(attributes, options, depth) {
  function writeDeclaration (line 44474) | function writeDeclaration(declaration, options, depth) {
  function writeInstruction (line 44480) | function writeInstruction(instruction, options, depth) {
  function writeComment (line 44502) | function writeComment(comment, options) {
  function writeCdata (line 44506) | function writeCdata(cdata, options) {
  function writeDoctype (line 44510) | function writeDoctype(doctype, options) {
  function writeText (line 44514) | function writeText(text, options) {
  function hasContent (line 44522) | function hasContent(element, options) {
  function writeElement (line 44554) | function writeElement(element, options, depth) {
  function writeElements (line 44585) | function writeElements(elements, options, depth, firstLine) {
  function hasContentCompact (line 44602) | function hasContentCompact(element, options, anyContent) {
  function writeElementCompact (line 44636) | function writeElementCompact(element, name, options, depth, indent) {
  function writeElementsCompact (line 44677) | function writeElementsCompact(element, options, depth, firstLine) {
  function validateOptions (line 44808) | function validateOptions(userOptions) {
  function nativeType (line 44851) | function nativeType(value) {
  function addField (line 44865) | function addField(type, value) {
  function manipulateAttributes (line 44935) | function manipulateAttributes(attributes) {
  function onInstruction (line 44959) | function onInstruction(instruction) {
  function onStartElement (line 44998) | function onStartElement(name, attributes) {
  function onText (line 45052) | function onText(text) {
  function onComment (line 45071) | function onComment(comment) {
  function onEndElement (line 45081) | function onEndElement(name) {
  function onCdata (line 45089) | function onCdata(cdata) {
  function onDoctype (line 45099) | function onDoctype(doctype) {
  function onError (line 45110) | function onError(error) {
  function validateOptions (line 45171) | function validateOptions (userOptions) {
  function Dicer (line 45477) | function Dicer (cfg) {
  function HeaderParser (line 45695) | function HeaderParser (cfg) {
  function PartStream (line 45796) | function PartStream (opts) {
  function SBMH (line 45843) | function SBMH (needle) {
  function Busboy (line 46058) | function Busboy (opts) {
  function Multipart (line 46167) | function Multipart (boy, cfg) {
  function skipPart (line 46430) | function skipPart (part) {
  function FileStream (line 46434) | function FileStream (opts) {
  function UrlEncoded (line 46464) | function UrlEncoded (boy, cfg) {
  function Decoder (line 46668) | function Decoder () {
  function getDecoder (line 46746) | function getDecoder (charset) {
  function decodeText (line 46843) | function decodeText (text, sourceEncoding, destEncoding) {
  function encodedReplacer (line 46990) | function encodedReplacer (match) {
  function parseParams (line 46999) | function parseParams (str) {
  function __nccwpck_require__ (line 47097) | function __nccwpck_require__(moduleId) {

FILE: dist/sourcemap-register.js
  function isArrayBuffer (line 1) | function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}
  function fromArrayBuffer (line 1) | function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){thro...
  function fromString (line 1) | function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Bu...
  function bufferFrom (line 1) | function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('...
  function ArraySet (line 1) | function ArraySet(){this._array=[];this._set=i?new Map:Object.create(null)}
  function toVLQSigned (line 1) | function toVLQSigned(e){return e<0?(-e<<1)+1:(e<<1)+0}
  function fromVLQSigned (line 1) | function fromVLQSigned(e){var r=(e&1)===1;var n=e>>1;return r?-n:n}
  function recursiveSearch (line 1) | function recursiveSearch(e,n,t,o,i,a){var u=Math.floor((n-e)/2)+e;var s=...
  function generatedPositionAfter (line 1) | function generatedPositionAfter(e,r){var n=e.generatedLine;var o=r.gener...
  function MappingList (line 1) | function MappingList(){this._array=[];this._sorted=true;this._last={gene...
  function swap (line 1) | function swap(e,r,n){var t=e[r];e[r]=e[n];e[n]=t}
  function randomIntInRange (line 1) | function randomIntInRange(e,r){return Math.round(e+Math.random()*(r-e))}
  function doQuickSort (line 1) | function doQuickSort(e,r,n,t){if(n<t){var o=randomIntInRange(n,t);var i=...
  function SourceMapConsumer (line 1) | function SourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.pars...
  function BasicSourceMapConsumer (line 1) | function BasicSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o...
  function Mapping (line 1) | function Mapping(){this.generatedLine=0;this.generatedColumn=0;this.sour...
  function IndexedSourceMapConsumer (line 1) | function IndexedSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n...
  function SourceMapGenerator (line 1) | function SourceMapGenerator(e){if(!e){e={}}this._file=o.getArg(e,"file",...
  function SourceNode (line 1) | function SourceNode(e,r,n,t,o){this.children=[];this.sourceContents={};t...
  function getNextLine (line 1) | function getNextLine(){return u<o.length?o[u++]:undefined}
  function addMappingWithCode (line 1) | function addMappingWithCode(e,r){if(e===null||e.source===undefined){t.ad...
  function getArg (line 1) | function getArg(e,r,n){if(r in e){return e[r]}else if(arguments.length==...
  function urlParse (line 1) | function urlParse(e){var r=e.match(n);if(!r){return null}return{scheme:r...
  function urlGenerate (line 1) | function urlGenerate(e){var r="";if(e.scheme){r+=e.scheme+":"}r+="//";if...
  function normalize (line 1) | function normalize(e){var n=e;var t=urlParse(e);if(t){if(!t.path){return...
  function join (line 1) | function join(e,r){if(e===""){e="."}if(r===""){r="."}var n=urlParse(r);v...
  function relative (line 1) | function relative(e,r){if(e===""){e="."}e=e.replace(/\/$/,"");var n=0;wh...
  function identity (line 1) | function identity(e){return e}
  function toSetString (line 1) | function toSetString(e){if(isProtoString(e)){return"$"+e}return e}
  function fromSetString (line 1) | function fromSetString(e){if(isProtoString(e)){return e.slice(1)}return e}
  function isProtoString (line 1) | function isProtoString(e){if(!e){return false}var r=e.length;if(r<9){ret...
  function compareByOriginalPositions (line 1) | function compareByOriginalPositions(e,r,n){var t=strcmp(e.source,r.sourc...
  function compareByGeneratedPositionsDeflated (line 1) | function compareByGeneratedPositionsDeflated(e,r,n){var t=e.generatedLin...
  function strcmp (line 1) | function strcmp(e,r){if(e===r){return 0}if(e===null){return 1}if(r===nul...
  function compareByGeneratedPositionsInflated (line 1) | function compareByGeneratedPositionsInflated(e,r){var n=e.generatedLine-...
  function parseSourceMapInput (line 1) | function parseSourceMapInput(e){return JSON.parse(e.replace(/^\)]}'[^\n]...
  function computeSourceURL (line 1) | function computeSourceURL(e,r,n){r=r||"";if(e){if(e[e.length-1]!=="/"&&r...
  function dynamicRequire (line 1) | function dynamicRequire(e,r){return e.require(r)}
  function isInBrowser (line 1) | function isInBrowser(){if(c==="browser")return true;if(c==="node")return...
  function hasGlobalProcessEventEmitter (line 1) | function hasGlobalProcessEventEmitter(){return typeof process==="object"...
  function globalProcessVersion (line 1) | function globalProcessVersion(){if(typeof process==="object"&&process!==...
  function globalProcessStderr (line 1) | function globalProcessStderr(){if(typeof process==="object"&&process!==n...
  function globalProcessExit (line 1) | function globalProcessExit(e){if(typeof process==="object"&&process!==nu...
  function handlerExec (line 1) | function handlerExec(e){return function(r){for(var n=0;n<e.length;n++){v...
  function supportRelativeURL (line 1) | function supportRelativeURL(e,r){if(!e)return r;var n=o.dirname(e);var t...
  function retrieveSourceMapURL (line 1) | function retrieveSourceMapURL(e){var r;if(isInBrowser()){try{var n=new X...
  function mapSourcePosition (line 1) | function mapSourcePosition(e){var r=f[e.source];if(!r){var n=v(e.source)...
  function mapEvalOrigin (line 1) | function mapEvalOrigin(e){var r=/^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/...
  function CallSiteToString (line 1) | function CallSiteToString(){var e;var r="";if(this.isNative()){r="native...
  function cloneCallSite (line 1) | function cloneCallSite(e){var r={};Object.getOwnPropertyNames(Object.get...
  function wrapCallSite (line 1) | function wrapCallSite(e,r){if(r===undefined){r={nextPosition:null,curPos...
  function prepareStackTrace (line 1) | function prepareStackTrace(e,r){if(l){p={};f={}}var n=e.name||"Error";va...
  function getErrorSource (line 1) | function getErrorSource(e){var r=/\n    at [^(]+ \((.*):(\d+):(\d+)\)/.e...
  function printErrorAndExit (line 1) | function printErrorAndExit(e){var r=getErrorSource(e);var n=globalProces...
  function shimEmitUncaughtException (line 1) | function shimEmitUncaughtException(){var e=process.emit;process.emit=fun...
  function __webpack_require__ (line 1) | function __webpack_require__(n){var t=r[n];if(t!==undefined){return t.ex...

FILE: dist/test-standalone-scripts/Assets/Editor/UnityTestRunnerAction/PlayerBuildModifier.cs
  class HeadlessPlayModeSetup (line 14) | public class HeadlessPlayModeSetup : ITestPlayerBuildModifier, IPostBuil...
    method ModifyOptions (line 17) | public BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions)
    method Cleanup (line 34) | public void Cleanup()
    method IsRunningTestsFromCommandLine (line 43) | private static bool IsRunningTestsFromCommandLine()

FILE: dist/test-standalone-scripts/Assets/Player/UnityTestRunnerAction/TestRunCallback.cs
  class MyTestRunCallback (line 12) | public class MyTestRunCallback : ITestRunCallback
    method RunStarted (line 36) | public void RunStarted(ITest testsToRun)
    method RunFinished (line 44) | public void RunFinished(ITestResult testResults)
    method TestStarted (line 84) | public void TestStarted(ITest test)
    method TestFinished (line 88) | public void TestFinished(ITestResult result)

FILE: src/main.ts
  function run (line 4) | async function run() {

FILE: src/model/action.ts
  type RunnerContext (line 3) | interface RunnerContext {
  method supportedPlatforms (line 9) | get supportedPlatforms() {
  method isRunningLocally (line 13) | get isRunningLocally() {
  method isRunningFromSource (line 17) | get isRunningFromSource() {
  method canonicalName (line 21) | get canonicalName() {
  method rootFolder (line 25) | get rootFolder() {
  method actionFolder (line 33) | get actionFolder() {
  method workspace (line 37) | get workspace() {
  method runnerContext (line 41) | runnerContext(): RunnerContext {
  method checkCompatibility (line 51) | checkCompatibility() {

FILE: src/model/docker.ts
  method ensureContainerRemoval (line 23) | async ensureContainerRemoval(parameters: RunnerContext) {
  method run (line 33) | async run(image, parameters, silent = false) {
  method getLinuxCommand (line 54) | getLinuxCommand(image, parameters): string {
  method getWindowsCommand (line 112) | getWindowsCommand(image, parameters): string {

FILE: src/model/image-environment-factory.ts
  class ImageEnvironmentFactory (line 1) | class ImageEnvironmentFactory {
    method getEnvVarString (line 2) | public static getEnvVarString(parameters) {
    method getEnvironmentVariables (line 21) | public static getEnvironmentVariables(parameters) {

FILE: src/model/image-tag.ts
  class ImageTag (line 3) | class ImageTag {
    method constructor (line 12) | constructor(imageProperties) {
    method versionPattern (line 37) | static get versionPattern() {
    method targetPlatformSuffixes (line 41) | static get targetPlatformSuffixes() {
    method getImagePlatformPrefix (line 55) | static getImagePlatformPrefix(platform) {
    method getImagePlatformType (line 68) | static getImagePlatformType(platform) {
    method getTargetPlatformSuffix (line 81) | static getTargetPlatformSuffix(targetPlatform, editorVersion) {
    method tag (line 139) | get tag() {
    method image (line 148) | get image() {
    method toString (line 152) | toString() {

FILE: src/model/input.ts
  class Input (line 7) | class Input {
    method testModes (line 8) | static get testModes() {
    method isValidFolderName (line 12) | static isValidFolderName(folderName) {
    method isValidGlobalFolderName (line 18) | static isValidGlobalFolderName(folderName) {
    method getPackageNameFromPackageJson (line 27) | static getPackageNameFromPackageJson(packagePath) {
    method getSerialFromLicenseFile (line 62) | private static getSerialFromLicenseFile(license: string) {
    method verifyTestsFolderIsPresent (line 78) | static verifyTestsFolderIsPresent(packagePath) {
    method getFromUser (line 86) | public static getFromUser() {

FILE: src/model/licensing-server-setup.ts
  class LicensingServerSetup (line 4) | class LicensingServerSetup {
    method Setup (line 5) | public static Setup(unityLicensingServer, actionFolder: string) {

FILE: src/model/output.ts
  method setArtifactsPath (line 4) | async setArtifactsPath(artifactsPath) {
  method setCoveragePath (line 7) | async setCoveragePath(coveragePath) {

FILE: src/model/platform.ts
  method default (line 2) | get default() {
  method types (line 6) | get types() {
  method isWindows (line 31) | isWindows(platform) {
  method isAndroid (line 41) | isAndroid(platform) {

FILE: src/model/results-check.ts
  method createCheck (line 10) | async createCheck(artifactsPath, githubToken, checkName) {
  method requestGitHubCheck (line 84) | async requestGitHubCheck(githubToken, checkName, output) {
  method renderSummary (line 110) | async renderSummary(runMetas) {
  method renderDetails (line 114) | async renderDetails(runMetas) {
  method render (line 118) | async render(viewPath, runMetas) {

FILE: src/model/results-meta.ts
  function timeHelper (line 3) | function timeHelper(seconds: number): string {
  method constructor (line 11) | constructor(title: string) {
  type Annotation (line 20) | type Annotation = components['schemas']['check-annotation'];
  class RunMeta (line 22) | class RunMeta extends Meta {
    method extractAnnotations (line 31) | extractAnnotations(): Annotation[] {
    method addTests (line 44) | addTests(testSuite: TestMeta[]): void {
    method addTest (line 50) | addTest(test: TestMeta): void {
    method summary (line 73) | get summary(): string {
    method mark (line 81) | get mark(): string {
  class TestMeta (line 88) | class TestMeta extends Meta {
    method constructor (line 93) | constructor(suite: string, title: string) {
    method isSkipped (line 100) | isSkipped(): boolean {
    method isFailed (line 104) | isFailed(): boolean {
    method summary (line 108) | get summary(): string {
    method mark (line 113) | get mark(): string {

FILE: src/model/results-parser.ts
  method parseResults (line 8) | async parseResults(filepath): Promise<RunMeta> {
  method convertResults (line 21) | convertResults(filename, filedata): RunMeta {
  method convertSuite (line 39) | convertSuite(suites) {
  method convertTests (line 62) | convertTests(suite, tests): TestMeta[] {
  method convertTestCase (line 74) | convertTestCase(suite, testCase): TestMeta {
  method findAnnotationPoint (line 129) | findAnnotationPoint(trace) {

FILE: src/model/results-report.ts
  type CommonAttributes (line 1) | interface CommonAttributes {
  type CommonSuiteAttributes (line 11) | interface CommonSuiteAttributes extends CommonAttributes {
  type TestRun (line 18) | interface TestRun {
  type TestRunAttributes (line 23) | interface TestRunAttributes extends CommonSuiteAttributes {
  type TestSuite (line 28) | interface TestSuite {
  type TestSuiteAttributes (line 35) | interface TestSuiteAttributes extends CommonSuiteAttributes {
  type TestCase (line 41) | interface TestCase {
  type TestCaseAttributes (line 46) | interface TestCaseAttributes extends CommonAttributes {
  type FailureMessage (line 55) | interface FailureMessage {

FILE: src/model/unity-version-parser.ts
  method parse (line 5) | parse(projectVersionTxt) {
  method read (line 16) | read(projectPath) {

FILE: src/post.ts
  function run (line 5) | async function run() {

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor/TimerFeature/TimerComponentEditor.cs
  class LevelScriptEditor (line 5) | [CustomEditor(typeof(TimerComponent))]
    method OnInspectorGUI (line 8) | public override void OnInspectorGUI()

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/BasicCounter.cs
  class BasicCounter (line 3) | public class BasicCounter
    method BasicCounter (line 7) | public BasicCounter(int count = 0)
    method Increment (line 12) | public void Increment()

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/SampleComponent.cs
  class SampleComponent (line 3) | public class SampleComponent : MonoBehaviour
    method Start (line 7) | void Start()
    method Update (line 13) | void Update()

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/TimerComponent.cs
  class TimerComponent (line 3) | public class TimerComponent : MonoBehaviour
    method Update (line 8) | void Update()

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Editor/SampleEditModeTest.cs
  class SampleEditModeTest (line 9) | public class SampleEditModeTest
    method TestIncrement (line 11) | [Test]
    method TestMaxCount (line 24) | [Test]

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/SampleComponentTest.cs
  class SampleComponentTest (line 8) | public class SampleComponentTest
    method Setup (line 13) | [SetUp]
    method TestIncrementOnUpdateAfterNextFrame (line 20) | [UnityTest]

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/SamplePlayModeTest.cs
  class SamplePlayModeTest (line 7) | public class SamplePlayModeTest
    method NewTestScriptSimplePasses (line 10) | [Test]
    method NewTestScriptWithEnumeratorPasses (line 25) | [UnityTest]

FILE: unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/TimerComponentTest.cs
  class TimerComponentTest (line 8) | public class TimerComponentTest
    method Setup (line 13) | [SetUp]
    method TestIncrementAfterSomeTime (line 20) | [UnityTest]
    method TestTimeScaleIsAffectingIncrement (line 37) | [UnityTest]
    method WaitForRealSeconds (line 57) | public static IEnumerator WaitForRealSeconds(float time)

FILE: unity-package-with-correct-tests/com.example.testpackage/Editor/TimerFeature/TimerComponentEditor.cs
  class LevelScriptEditor (line 5) | [CustomEditor(typeof(TimerComponent))]
    method OnInspectorGUI (line 8) | public override void OnInspectorGUI()

FILE: unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/BasicCounter.cs
  class BasicCounter (line 3) | public class BasicCounter
    method BasicCounter (line 7) | public BasicCounter(int count = 0)
    method Increment (line 12) | public void Increment()

FILE: unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/SampleComponent.cs
  class SampleComponent (line 3) | public class SampleComponent : MonoBehaviour
    method Start (line 7) | void Start()
    method Update (line 13) | void Update()

FILE: unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/TimerComponent.cs
  class TimerComponent (line 3) | public class TimerComponent : MonoBehaviour
    method Update (line 8) | void Update()

FILE: unity-package-with-correct-tests/com.example.testpackage/Tests/Editor/SampleEditModeTest.cs
  class SampleEditModeTest (line 9) | public class SampleEditModeTest
    method TestIncrement (line 11) | [Test]
    method TestMaxCount (line 24) | [Test]

FILE: unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/SampleComponentTest.cs
  class SampleComponentTest (line 8) | public class SampleComponentTest
    method Setup (line 13) | [SetUp]
    method TestIncrementOnUpdateAfterNextFrame (line 20) | [UnityTest]

FILE: unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/SamplePlayModeTest.cs
  class SamplePlayModeTest (line 7) | public class SamplePlayModeTest
    method NewTestScriptSimplePasses (line 10) | [Test]
    method NewTestScriptWithEnumeratorPasses (line 25) | [UnityTest]

FILE: unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/TimerComponentTest.cs
  class TimerComponentTest (line 8) | public class TimerComponentTest
    method Setup (line 13) | [SetUp]
    method TestIncrementAfterSomeTime (line 20) | [UnityTest]
    method TestTimeScaleIsAffectingIncrement (line 37) | [UnityTest]
    method WaitForRealSeconds (line 57) | public static IEnumerator WaitForRealSeconds(float time)

FILE: unity-project-with-correct-tests/Assets/Scripts/BasicCounter.cs
  class BasicCounter (line 3) | public class BasicCounter
    method BasicCounter (line 7) | public BasicCounter(int count = 0)
    method Increment (line 12) | public void Increment()

FILE: unity-project-with-correct-tests/Assets/Scripts/SampleComponent.cs
  class SampleComponent (line 3) | public class SampleComponent : MonoBehaviour
    method Start (line 7) | void Start()
    method Update (line 13) | void Update()

FILE: unity-project-with-correct-tests/Assets/Scripts/TimerComponent.cs
  class TimerComponent (line 3) | public class TimerComponent : MonoBehaviour
    method Update (line 8) | void Update()

FILE: unity-project-with-correct-tests/Assets/Tests/EditMode/SampleEditModeTest.cs
  class SampleEditModeTest (line 9) | public class SampleEditModeTest
    method TestIncrement (line 11) | [Test]
    method TestMaxCount (line 24) | [Test]

FILE: unity-project-with-correct-tests/Assets/Tests/PlayMode/SampleComponentTest.cs
  class SampleComponentTest (line 8) | public class SampleComponentTest
    method Setup (line 13) | [SetUp]
    method TestIncrementOnUpdateAfterNextFrame (line 20) | [UnityTest]

FILE: unity-project-with-correct-tests/Assets/Tests/PlayMode/SamplePlayModeTest.cs
  class SamplePlayModeTest (line 7) | public class SamplePlayModeTest
    method NewTestScriptSimplePasses (line 10) | [Test]
    method NewTestScriptWithEnumeratorPasses (line 25) | [UnityTest]

FILE: unity-project-with-correct-tests/Assets/Tests/PlayMode/TimerComponentTest.cs
  class TimerComponentTest (line 8) | public class TimerComponentTest
    method Setup (line 13) | [SetUp]
    method TestIncrementAfterSomeTime (line 20) | [UnityTest]
    method TestTimeScaleIsAffectingIncrement (line 37) | [UnityTest]
    method WaitForRealSeconds (line 57) | public static IEnumerator WaitForRealSeconds(float time)
Condensed preview — 259 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,895K chars).
[
  {
    "path": ".dockerignore",
    "chars": 66,
    "preview": "# Order ignore, include\n*\n\n# Files required for the action\n!dist/\n"
  },
  {
    "path": ".editorconfig",
    "chars": 324,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\nmax_l"
  },
  {
    "path": ".gitattributes",
    "chars": 133,
    "preview": "dist/index* -diff linguist-generated=true\ndist/licenses* -diff linguist-generated=true\ndist/sourcemap* -diff linguist-ge"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 640,
    "preview": "# These are supported funding model platforms\n\ngithub: game-ci\npatreon: # Replace with a single Patreon username\nopen_co"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 430,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: ''\n---\n\n**Bug descriptio"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 143,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Discuss on Discord\n    url: https://game.ci/discord\n    about: Join"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 415,
    "preview": "---\nname: Feature request\nabout: Suggest an improvement, or a new feature\ntitle: ''\nlabels: ''\nassignees: ''\n---\n\n**Cont"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/other.md",
    "chars": 78,
    "preview": "---\nname: Other\nabout: Everything else\ntitle: ''\nlabels: ''\nassignees: ''\n---\n"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 146,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: github-actions\n    directory: '/'\n    schedule:\n      interval: daily\n    ope"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 697,
    "preview": "#### Changes\n\n- ...\n\n#### Related Issues\n\n- ...\n\n#### Related PRs\n\n- ...\n\n#### Successful Workflow Run Link\n\nPRs don't h"
  },
  {
    "path": ".github/workflows/cats.yml",
    "chars": 304,
    "preview": "name: Cats 😺\n\non:\n  pull_request_target:\n    types:\n      - opened\n      - reopened\n\njobs:\n  aCatForCreatingThePullReque"
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 33757,
    "preview": "name: Actions 😎\non:\n  push:\n  workflow_dispatch:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_req"
  },
  {
    "path": ".github/workflows/versioning.yml",
    "chars": 199,
    "preview": "name: Versioning\n\non:\n  release:\n    types: [published, edited]\n\njobs:\n  updateMajorTag:\n    name: Update major tag\n    "
  },
  {
    "path": ".gitignore",
    "chars": 141,
    "preview": ".idea\nnode_modules\ncoverage/\nlib/\n\n# Yarn 4 (Berry)\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!."
  },
  {
    "path": ".husky/pre-commit",
    "chars": 148,
    "preview": "#!/usr/bin/env sh\nyarn lint-staged\nyarn typecheck\n\nif command -v gitleaks >/dev/null 2>&1; then\n  gitleaks protect --sta"
  },
  {
    "path": ".oxfmtrc.json",
    "chars": 328,
    "preview": "{\n  \"semi\": true,\n  \"singleQuote\": true,\n  \"trailingComma\": \"all\",\n  \"printWidth\": 100,\n  \"proseWrap\": \"preserve\",\n  \"so"
  },
  {
    "path": ".oxlintrc.json",
    "chars": 1611,
    "preview": "{\n  \"$schema\": \"./node_modules/oxlint/configuration_schema.json\",\n  \"plugins\": [\"typescript\", \"vitest\", \"unicorn\", \"oxc\""
  },
  {
    "path": ".yarnrc.yml",
    "chars": 138,
    "preview": "approvedGitRepositories:\n  - '**'\n\ncompressionLevel: mixed\n\nenableGlobalCache: false\n\nenableHardenedMode: false\n\nnodeLin"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3351,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1240,
    "preview": "# Contributing\n\n## How to Contribute\n\n#### Code of Conduct\n\nThis repository has adopted the Contributor Covenant as it's"
  },
  {
    "path": "LICENSE",
    "chars": 1097,
    "preview": "MIT License\n\nCopyright (c) 2019-present Webber Takken <webber@takken.io>\n\nPermission is hereby granted, free of charge, "
  },
  {
    "path": "README.md",
    "chars": 1419,
    "preview": "# Unity - Test runner\n\n(Not affiliated with Unity Technologies)\n\nGitHub Action to\n[run tests](https://github.com/marketp"
  },
  {
    "path": "action.yml",
    "chars": 5201,
    "preview": "name: 'Unity - Test runner'\nauthor: Webber Takken <webber@takken.io>\ndescription: 'Run tests for any Unity project.'\ninp"
  },
  {
    "path": "artifacts/editmode-results.xml",
    "chars": 6408,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<test-run id=\"2\" testcasecount=\"6\" result=\"Failed(Child)\" total=\"6\" passed=\"2\" fa"
  },
  {
    "path": "artifacts/playmode-results.xml",
    "chars": 9449,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<test-run id=\"2\" testcasecount=\"8\" result=\"Failed(Child)\" total=\"8\" passed=\"2\" fa"
  },
  {
    "path": "dist/BlankProject/.gitignore",
    "chars": 617,
    "preview": "Library/\n[Tt]emp/\n[Oo]bj/\n[Bb]uild/\n[Bb]uilds/\n[Ll]ogs/\n\n# Uncomment this line if you wish to ignore the asset store to"
  },
  {
    "path": "dist/BlankProject/Assets/Scenes/SampleScene.unity",
    "chars": 5549,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersi"
  },
  {
    "path": "dist/BlankProject/Assets/Scenes/SampleScene.unity.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 2cda990e2423bbf4892e6590ba056729\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "dist/BlankProject/Assets/Scenes.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 131a6b21c8605f84396be9f6751fb6e3\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "dist/BlankProject/Packages/manifest.json",
    "chars": 28,
    "preview": "{\n  \"dependencies\": {\n  }\n}\n"
  },
  {
    "path": "dist/BlankProject/Packages/packages-lock.json",
    "chars": 28,
    "preview": "{\n  \"dependencies\": {\n  }\n}\n"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/AudioManager.asset",
    "chars": 413,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Vo"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/ClusterInputManager.asset",
    "chars": 114,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/DynamicsManager.asset",
    "chars": 1294,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 13\n  m"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/EditorBuildSettings.asset",
    "chars": 257,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion:"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/EditorSettings.asset",
    "chars": 1250,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  "
  },
  {
    "path": "dist/BlankProject/ProjectSettings/GraphicsSettings.asset",
    "chars": 2312,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 13\n "
  },
  {
    "path": "dist/BlankProject/ProjectSettings/InputManager.asset",
    "chars": 9731,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Ax"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/MemorySettings.asset",
    "chars": 1192,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!387306366 &1\nMemorySettings:\n  m_ObjectHideFlags: 0\n  m_EditorMemorySett"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/NavMeshAreas.asset",
    "chars": 1363,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersio"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/NetworkManager.asset",
    "chars": 151,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!149 &1\nNetworkManager:\n  m_ObjectHideFlags: 0\n  m_DebugLevel: 0\n  m_Send"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/PackageManagerSettings.asset",
    "chars": 1035,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObj"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/Physics2DSettings.asset",
    "chars": 2028,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n "
  },
  {
    "path": "dist/BlankProject/ProjectSettings/PresetManager.asset",
    "chars": 146,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  serializedVersion:"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/ProjectSettings.asset",
    "chars": 19056,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 23\n  "
  },
  {
    "path": "dist/BlankProject/ProjectSettings/ProjectVersion.txt",
    "chars": 83,
    "preview": "m_EditorVersion: 2021.2.8f1\nm_EditorVersionWithRevision: 2021.2.8f1 (d0e5f0a7b06a)\n"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/QualitySettings.asset",
    "chars": 6643,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/TagManager.asset",
    "chars": 378,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Defaul"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/TimeManager.asset",
    "chars": 202,
    "preview": "%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  Maximu"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/UnityConnectSettings.asset",
    "chars": 901,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion:"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/VFXManager.asset",
    "chars": 353,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fil"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/VersionControlSettings.asset",
    "chars": 188,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!890905787 &1\nVersionControlSettings:\n  m_ObjectHideFlags: 0\n  m_Mode: Vi"
  },
  {
    "path": "dist/BlankProject/ProjectSettings/boot.config",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "dist/index.js",
    "chars": 2335075,
    "preview": "require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 3"
  },
  {
    "path": "dist/licenses.txt",
    "chars": 43327,
    "preview": "@actions/core\nMIT\nThe MIT License (MIT)\n\nCopyright 2019 GitHub\n\nPermission is hereby granted, free of charge, to any per"
  },
  {
    "path": "dist/main.js",
    "chars": 51,
    "preview": "const index = require('./index.js');\n\nindex.main();"
  },
  {
    "path": "dist/platforms/ubuntu/activate.sh",
    "chars": 3293,
    "preview": "#!/usr/bin/env bash\n\nif [[ -n \"$UNITY_SERIAL\" && -n \"$UNITY_EMAIL\" && -n \"$UNITY_PASSWORD\" ]]; then\n  #\n  # SERIAL LICEN"
  },
  {
    "path": "dist/platforms/ubuntu/entrypoint.sh",
    "chars": 1356,
    "preview": "#!/usr/bin/env bash\n\n# Ensure machine ID is randomized for personal license activation\nif [[ \"$UNITY_SERIAL\" = F* ]]; th"
  },
  {
    "path": "dist/platforms/ubuntu/return_license.sh",
    "chars": 592,
    "preview": "#!/usr/bin/env bash\n\nif [[ -n \"$UNITY_LICENSING_SERVER\" ]]; then\n  #\n  # Return any floating license used.\n  #\n  echo \"R"
  },
  {
    "path": "dist/platforms/ubuntu/run_steps.sh",
    "chars": 919,
    "preview": "#!/usr/bin/env bash\n\n#\n# Run steps\n#\nsource /steps/set_extra_git_configs.sh\nsource /steps/set_gitcredential.sh\nsource /s"
  },
  {
    "path": "dist/platforms/ubuntu/run_tests.sh",
    "chars": 8797,
    "preview": "#!/usr/bin/env bash\n\n#\n# Set and display project path\n#\n\nUNITY_PROJECT_PATH=\"$GITHUB_WORKSPACE/$PROJECT_PATH\"\necho \"Usin"
  },
  {
    "path": "dist/platforms/ubuntu/set_extra_git_configs.sh",
    "chars": 773,
    "preview": "#!/usr/bin/env bash\n\nif [ -z \"${GIT_CONFIG_EXTENSIONS}\" ]\nthen\n  echo \"GIT_CONFIG_EXTENSIONS unset skipping\"\nelse\n  echo"
  },
  {
    "path": "dist/platforms/ubuntu/set_gitcredential.sh",
    "chars": 922,
    "preview": "#!/usr/bin/env bash\n\nif [ -z \"${GIT_PRIVATE_TOKEN}\" ]\nthen\n  echo \"GIT_PRIVATE_TOKEN unset skipping\"\nelse\n  echo \"GIT_P"
  },
  {
    "path": "dist/platforms/windows/activate.ps1",
    "chars": 2519,
    "preview": "# Activates Unity\n\nWrite-Output \"\"\nWrite-Output \"###########################\"\nWrite-Output \"#        Activating       #\""
  },
  {
    "path": "dist/platforms/windows/entrypoint.ps1",
    "chars": 978,
    "preview": "#\n# Run steps\n#\n\n. \"c:\\steps\\set_gitcredential.ps1\"\n\n. \"c:\\steps\\activate.ps1\"\n\n# If we didn't activate successfully, ex"
  },
  {
    "path": "dist/platforms/windows/return_license.ps1",
    "chars": 2087,
    "preview": "# Return the active Unity license\n\nWrite-Output \"\"\nWrite-Output \"###########################\"\nWrite-Output \"#      Retur"
  },
  {
    "path": "dist/platforms/windows/run_tests.ps1",
    "chars": 6262,
    "preview": "#\n# Set and display project path\n#\n\n$UNITY_PROJECT_PATH = \"${env:GITHUB_WORKSPACE}/${env:PROJECT_PATH}\"\nWrite-Output \"Us"
  },
  {
    "path": "dist/platforms/windows/set_gitcredential.ps1",
    "chars": 966,
    "preview": "if ($null -eq ${env:GIT_PRIVATE_TOKEN})\n{\n    Write-Output \"GIT_PRIVATE_TOKEN unset skipping\"\n}\nelse\n{\n  Write-Host \"GI"
  },
  {
    "path": "dist/post.js",
    "chars": 51,
    "preview": "const index = require('./index.js');\n\nindex.post();"
  },
  {
    "path": "dist/results-check-details.hbs",
    "chars": 332,
    "preview": "{{#runs}}\n\n<details><summary>{{summary}}</summary>\n\n{{#suites}}\n* {{summary}}\n{{#tests}}\n  * {{summary}}\n  {{#if annotat"
  },
  {
    "path": "dist/results-check-summary.hbs",
    "chars": 36,
    "preview": "{{#runs}}\n### {{summary}}\n{{/runs}}\n"
  },
  {
    "path": "dist/sourcemap-register.js",
    "chars": 41034,
    "preview": "(()=>{var e={650:e=>{var r=Object.prototype.toString;var n=typeof Buffer.alloc===\"function\"&&typeof Buffer.allocUnsafe=="
  },
  {
    "path": "dist/test-standalone-scripts/.gitignore",
    "chars": 725,
    "preview": "#\n# Note: Non default ignore file, as this only tests Builder script.\n#\n\n[Ll]ibrary/\n[Tt]emp/\n[Oo]bj/\n[Bb]uild/\n[Bb]uil"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Editor/UnityTestRunnerAction/PlayerBuildModifier.cs",
    "chars": 2054,
    "preview": "using System;\nusing System.Linq;\nusing UnityEditor;\nusing UnityEditor.TestTools;\nusing UnityEngine;\nusing UnityEngine.Te"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Editor/UnityTestRunnerAction/PlayerBuildModifier.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 500127a78ea2408479825b0807929249\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Editor/UnityTestRunnerAction.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 0cf2129f2cbdf3b4185e808b8098349d\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: dea28d93f6267af4f8661eb2043f749a\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Player/UnityTestRunnerAction/TestRunCallback.cs",
    "chars": 3892,
    "preview": "using NUnit.Framework.Interfaces;\nusing System;\nusing System.Xml;\nusing UnityEngine;\nusing UnityEngine.TestRunner;\nusing"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Player/UnityTestRunnerAction/TestRunCallback.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: ee1aa3805d7b51f46a3ddefe39d76ba5\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Player/UnityTestRunnerAction/UnityTestRunnerAction.asmdef",
    "chars": 358,
    "preview": "{\n    \"name\": \"UnityTestRunnerAction\",\n    \"references\": [\n        \"GUID:27619889b8ba8c24980f49ee34dbb44a\"\n    ],\n    \"i"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Player/UnityTestRunnerAction/UnityTestRunnerAction.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 8a9bfe020dc3a8747afebc3a87516973\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Player/UnityTestRunnerAction.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 7d97b4f9ec1fb744a9aab82d6c21100d\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "dist/test-standalone-scripts/Assets/Player.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: dbe67f3a46ffb8643acd08c86957d9bf\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "dist/test-standalone-scripts/Packages/manifest.json",
    "chars": 1935,
    "preview": "{\n  \"dependencies\": {\n    \"com.unity.2d.sprite\": \"1.0.0\",\n    \"com.unity.2d.tilemap\": \"1.0.0\",\n    \"com.unity.ads\": \"2.0"
  },
  {
    "path": "dist/test-standalone-scripts/ProjectSettings/ProjectSettings.asset",
    "chars": 17738,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 18\n  "
  },
  {
    "path": "dist/test-standalone-scripts/ProjectSettings/ProjectVersion.txt",
    "chars": 85,
    "preview": "m_EditorVersion: 2019.2.11f1\nm_EditorVersionWithRevision: 2019.2.11f1 (5f859a4cfee5)\n"
  },
  {
    "path": "dist/test-standalone-scripts/ProjectSettings/XRSettings.asset",
    "chars": 158,
    "preview": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n  "
  },
  {
    "path": "dist/unity-config/services-config.json.template",
    "chars": 175,
    "preview": "{\n  \"licensingServiceBaseUrl\": \"%URL%\",\n  \"enableEntitlementLicensing\": true,\n  \"enableFloatingApi\": true,\n  \"clientConn"
  },
  {
    "path": "mise.toml",
    "chars": 105,
    "preview": "[tools]\nnode = \"20.18.0\"\nyarn = \"4.14.1\"\nactionlint = \"latest\"\nshellcheck = \"latest\"\ngitleaks = \"latest\"\n"
  },
  {
    "path": "package.json",
    "chars": 1904,
    "preview": "{\n  \"name\": \"unity-test-runner\",\n  \"version\": \"3.0.0\",\n  \"description\": \"Run tests for any Unity project.\",\n  \"main\": \"d"
  },
  {
    "path": "scripts/ensure-husky.mjs",
    "chars": 2131,
    "preview": "#!/usr/bin/env node\n// Self-heals husky git hooks before local dev workflows.\n//\n// Why this exists: Yarn 4 skips lifecy"
  },
  {
    "path": "src/index.ts",
    "chars": 76,
    "preview": "export { run as main } from './main';\nexport { run as post } from './post';\n"
  },
  {
    "path": "src/main.ts",
    "chars": 2177,
    "preview": "import * as core from '@actions/core';\nimport { Action, Docker, ImageTag, Input, Output, ResultsCheck } from './model';\n"
  },
  {
    "path": "src/model/action.test.ts",
    "chars": 1005,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport Action from "
  },
  {
    "path": "src/model/action.ts",
    "chars": 1276,
    "preview": "import path from 'path';\n\nexport interface RunnerContext {\n  runnerTemporaryPath: string;\n  githubAction: string;\n}\n\ncon"
  },
  {
    "path": "src/model/docker.test.ts",
    "chars": 529,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport Action from "
  },
  {
    "path": "src/model/docker.ts",
    "chars": 6412,
    "preview": "import ImageEnvironmentFactory from './image-environment-factory';\nimport { existsSync, mkdirSync, readFileSync, rmSync "
  },
  {
    "path": "src/model/image-environment-factory.ts",
    "chars": 3692,
    "preview": "class ImageEnvironmentFactory {\n  public static getEnvVarString(parameters) {\n    const environmentVariables = ImageEnvi"
  },
  {
    "path": "src/model/image-tag.test.ts",
    "chars": 3773,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport ImageTag fro"
  },
  {
    "path": "src/model/image-tag.ts",
    "chars": 4490,
    "preview": "import Platform from './platform';\n\nclass ImageTag {\n  public customImage?: string;\n  public repository: string;\n  publi"
  },
  {
    "path": "src/model/index.test.ts",
    "chars": 349,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport * as Index f"
  },
  {
    "path": "src/model/index.ts",
    "chars": 292,
    "preview": "export { default as Action } from './action';\nexport { default as Docker } from './docker';\nexport { default as ImageTag"
  },
  {
    "path": "src/model/input.test.ts",
    "chars": 4405,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport Input from '"
  },
  {
    "path": "src/model/input.ts",
    "chars": 9065,
    "preview": "import UnityVersionParser from './unity-version-parser';\nimport fs from 'fs';\nimport { getInput } from '@actions/core';\n"
  },
  {
    "path": "src/model/licensing-server-setup.ts",
    "chars": 726,
    "preview": "import * as core from '@actions/core';\nimport fs from 'fs';\n\nclass LicensingServerSetup {\n  public static Setup(unityLi"
  },
  {
    "path": "src/model/output.test.ts",
    "chars": 1331,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport Output from "
  },
  {
    "path": "src/model/output.ts",
    "chars": 290,
    "preview": "import * as core from '@actions/core';\n\nconst Output = {\n  async setArtifactsPath(artifactsPath) {\n    await core.setOut"
  },
  {
    "path": "src/model/platform.test.ts",
    "chars": 1153,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport Platform fro"
  },
  {
    "path": "src/model/platform.ts",
    "chars": 1071,
    "preview": "const Platform = {\n  get default() {\n    return Platform.types.StandaloneWindows64;\n  },\n\n  get types() {\n    return {\n "
  },
  {
    "path": "src/model/results-check.test.ts",
    "chars": 530,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport ResultsCheck"
  },
  {
    "path": "src/model/results-check.ts",
    "chars": 4631,
    "preview": "import * as core from '@actions/core';\nimport * as fs from 'fs';\nimport * as github from '@actions/github';\nimport Handl"
  },
  {
    "path": "src/model/results-meta.ts",
    "chars": 2814,
    "preview": "import { components } from '@octokit/openapi-types';\n\nexport function timeHelper(seconds: number): string {\n  return `$"
  },
  {
    "path": "src/model/results-parser.test.ts",
    "chars": 10068,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport * as fs from"
  },
  {
    "path": "src/model/results-parser.ts",
    "chars": 4808,
    "preview": "import * as core from '@actions/core';\nimport * as fs from 'fs';\nimport * as xmljs from 'xml-js';\nimport { RunMeta, Test"
  },
  {
    "path": "src/model/results-report.ts",
    "chars": 1192,
    "preview": "interface CommonAttributes {\n  id: string;\n  result: string;\n  asserts: string;\n\n  'start-time': string;\n  'end-time': "
  },
  {
    "path": "src/model/unity-version-parser.test.ts",
    "chars": 1227,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach, beforeAll, afterAll, test } from 'vitest';\nimport UnityVersion"
  },
  {
    "path": "src/model/unity-version-parser.ts",
    "chars": 796,
    "preview": "import fs from 'fs';\nimport path from 'path';\n\nconst UnityVersionParser = {\n  parse(projectVersionTxt) {\n    const versi"
  },
  {
    "path": "src/post.ts",
    "chars": 315,
    "preview": "import * as core from '@actions/core';\nimport Action from './model/action';\nimport { Docker } from './model';\n\nexport as"
  },
  {
    "path": "src/test/setup.ts",
    "chars": 1075,
    "preview": "import { afterEach, beforeEach } from 'vitest';\n\n// Fail tests when console.error / console.warn etc are called from\n// "
  },
  {
    "path": "src/views/results-check-details.hbs",
    "chars": 445,
    "preview": "{{#runs}}\n\n  <details><summary>{{summary}}</summary>\n\n    {{#suites}}\n      *\n      {{summary}}\n      {{#tests}}\n       "
  },
  {
    "path": "src/views/results-check-summary.hbs",
    "chars": 39,
    "preview": "{{#runs}}\n  ###\n  {{summary}}\n{{/runs}}"
  },
  {
    "path": "tsconfig.json",
    "chars": 435,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es2022\",\n    \"lib\": [\"es2022\", \"DOM\"],\n    \"module\": \"commonjs\",\n    \"moduleReso"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor/TimerFeature/TimerComponentEditor.cs",
    "chars": 320,
    "preview": "using UnityEngine;\nusing System.Collections;\nusing UnityEditor;\n\n[CustomEditor(typeof(TimerComponent))]\npublic class Lev"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor/TimerFeature/TimerComponentEditor.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: f0a715d2f35ea4c40a6f1cdae355c61c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor/TimerFeature.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e3a65787d84893340b9dc38af5b7c31f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor/example.testpackage.Editor.asmdef",
    "chars": 402,
    "preview": "{\n    \"name\": \"example.testpackage.Editor\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n        \"example.testpackage.Ru"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor/example.testpackage.Editor.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 8223b1b52474b674a87c6113b6384f10\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: a62b511ba12825d4d9f992b4ed37a533\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/BasicCounter.cs",
    "chars": 265,
    "preview": "using System;\n\npublic class BasicCounter\n{\n  public const int MaxCount = 10;\n\n  public BasicCounter(int count = 0)\n  {\n"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/BasicCounter.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 0bd8dfbd5c7fc9e439246091668234b0\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/SampleComponent.cs",
    "chars": 247,
    "preview": "using UnityEngine;\n\npublic class SampleComponent : MonoBehaviour\n{\n  public BasicCounter Counter;\n\n  void Start()\n  {\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/SampleComponent.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 121f2ede62657a84082c012941df22d5\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/TimerComponent.cs",
    "chars": 278,
    "preview": "using UnityEngine;\n\npublic class TimerComponent : MonoBehaviour\n{\n  public BasicCounter Counter = new BasicCounter();\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts/TimerComponent.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 563e4fb514abf6141b80ca1b71c08889\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature/Scripts.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 6c6729c46a2a6594da2ce1182420ab81\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/TimerFeature.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 21861106477d38342a589fc525c4e0bb\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/example.testpackage.Runtime.asmdef",
    "chars": 360,
    "preview": "{\n    \"name\": \"example.testpackage.Runtime\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [],\n"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime/example.testpackage.Runtime.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: b20629d7e725e1e449076020f132df2a\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Runtime.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e472ec5749e60ca4db87f10cec905d2c\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Editor/SampleEditModeTest.cs",
    "chars": 654,
    "preview": "using System.Collections;\nusing System.Collections.Generic;\nusing NUnit.Framework;\nusing UnityEngine;\nusing UnityEngine"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Editor/SampleEditModeTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 88de94cc1489d83488ce54f71b512989\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Editor/example.testpackage.EditorTests.asmdef",
    "chars": 605,
    "preview": "{\n    \"name\": \"example.testpackage.EditorTests\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n        \"UnityEngine.TestR"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Editor/example.testpackage.EditorTests.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: b5712d2009ce3b34a8ca077667b16764\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 7644cfe4cdc2d0f4ebc7ab351323a576\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/SampleComponentTest.cs",
    "chars": 751,
    "preview": "using System.Collections;\nusing NUnit.Framework;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace Tests\n{\n  p"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/SampleComponentTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: b551b84934711564eb78aab8c16425ac\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/SamplePlayModeTest.cs",
    "chars": 889,
    "preview": "using System.Collections;\nusing NUnit.Framework;\nusing UnityEngine.TestTools;\n\nnamespace Tests\n{\n  public class SampleP"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/SamplePlayModeTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 4dbe2d2dc79550c4d81602bcf94a9824\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/TimerComponentTest.cs",
    "chars": 1885,
    "preview": "using System.Collections;\nusing NUnit.Framework;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace Tests\n{\n  p"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/TimerComponentTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 010121a56a70d60428dc89307eb77b54\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/example.testpackage.RuntimeTests.asmdef",
    "chars": 546,
    "preview": "{\n    \"name\": \"example.testpackage.RuntimeTests\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n        \"UnityEngine.Test"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime/example.testpackage.RuntimeTests.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 902aaaf7a59149243b2f4e38fc9f388e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests/Runtime.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: b4f774583b1374a4abe450c7100726bd\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/Tests.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: d0f3a0ff2938264498234e4aaa66cf5f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/package.json",
    "chars": 431,
    "preview": "{\n  \"name\": \"com.dependencyexample.testpackage\",\n  \"version\": \"0.0.1\",\n  \"displayName\": \"Test Package\",\n  \"description\":"
  },
  {
    "path": "unity-package-with-correct-tests/com.dependencyexample.testpackage/package.json.meta",
    "chars": 163,
    "preview": "fileFormatVersion: 2\nguid: 4232dbd3889ab6a4393e846291288fb0\nPackageManifestImporter:\n  externalObjects: {}\n  userData: \n"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Editor/TimerFeature/TimerComponentEditor.cs",
    "chars": 320,
    "preview": "using UnityEngine;\nusing System.Collections;\nusing UnityEditor;\n\n[CustomEditor(typeof(TimerComponent))]\npublic class Lev"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Editor/TimerFeature/TimerComponentEditor.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: f0a715d2f35ea4c40a6f1cdae355c61c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Editor/TimerFeature.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e3a65787d84893340b9dc38af5b7c31f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Editor/example.testpackage.Editor.asmdef",
    "chars": 402,
    "preview": "{\n    \"name\": \"example.testpackage.Editor\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n        \"example.testpackage.Ru"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Editor/example.testpackage.Editor.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 8223b1b52474b674a87c6113b6384f10\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: a62b511ba12825d4d9f992b4ed37a533\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/BasicCounter.cs",
    "chars": 265,
    "preview": "using System;\n\npublic class BasicCounter\n{\n  public const int MaxCount = 10;\n\n  public BasicCounter(int count = 0)\n  {\n"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/BasicCounter.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 0bd8dfbd5c7fc9e439246091668234b0\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/SampleComponent.cs",
    "chars": 247,
    "preview": "using UnityEngine;\n\npublic class SampleComponent : MonoBehaviour\n{\n  public BasicCounter Counter;\n\n  void Start()\n  {\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/SampleComponent.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 121f2ede62657a84082c012941df22d5\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/TimerComponent.cs",
    "chars": 278,
    "preview": "using UnityEngine;\n\npublic class TimerComponent : MonoBehaviour\n{\n  public BasicCounter Counter = new BasicCounter();\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts/TimerComponent.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 563e4fb514abf6141b80ca1b71c08889\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature/Scripts.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 6c6729c46a2a6594da2ce1182420ab81\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/TimerFeature.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 21861106477d38342a589fc525c4e0bb\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/example.testpackage.Runtime.asmdef",
    "chars": 360,
    "preview": "{\n    \"name\": \"example.testpackage.Runtime\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\": [],\n"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime/example.testpackage.Runtime.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: b20629d7e725e1e449076020f132df2a\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Runtime.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e472ec5749e60ca4db87f10cec905d2c\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Editor/SampleEditModeTest.cs",
    "chars": 654,
    "preview": "using System.Collections;\nusing System.Collections.Generic;\nusing NUnit.Framework;\nusing UnityEngine;\nusing UnityEngine"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Editor/SampleEditModeTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 88de94cc1489d83488ce54f71b512989\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Editor/example.testpackage.EditorTests.asmdef",
    "chars": 605,
    "preview": "{\n    \"name\": \"example.testpackage.EditorTests\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n        \"UnityEngine.TestR"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Editor/example.testpackage.EditorTests.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: b5712d2009ce3b34a8ca077667b16764\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 7644cfe4cdc2d0f4ebc7ab351323a576\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/SampleComponentTest.cs",
    "chars": 751,
    "preview": "using System.Collections;\nusing NUnit.Framework;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace Tests\n{\n  p"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/SampleComponentTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: b551b84934711564eb78aab8c16425ac\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/SamplePlayModeTest.cs",
    "chars": 889,
    "preview": "using System.Collections;\nusing NUnit.Framework;\nusing UnityEngine.TestTools;\n\nnamespace Tests\n{\n  public class SampleP"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/SamplePlayModeTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 4dbe2d2dc79550c4d81602bcf94a9824\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/TimerComponentTest.cs",
    "chars": 1885,
    "preview": "using System.Collections;\nusing NUnit.Framework;\nusing UnityEngine;\nusing UnityEngine.TestTools;\n\nnamespace Tests\n{\n  p"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/TimerComponentTest.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 010121a56a70d60428dc89307eb77b54\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/example.testpackage.RuntimeTests.asmdef",
    "chars": 546,
    "preview": "{\n    \"name\": \"example.testpackage.RuntimeTests\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n        \"UnityEngine.Test"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime/example.testpackage.RuntimeTests.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 902aaaf7a59149243b2f4e38fc9f388e\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests/Runtime.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: b4f774583b1374a4abe450c7100726bd\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/Tests.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: d0f3a0ff2938264498234e4aaa66cf5f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/package.json",
    "chars": 361,
    "preview": "{\n  \"name\": \"com.example.testpackage\",\n  \"version\": \"0.0.1\",\n  \"displayName\": \"Test Package\",\n  \"description\": \"Test Pac"
  },
  {
    "path": "unity-package-with-correct-tests/com.example.testpackage/package.json.meta",
    "chars": 163,
    "preview": "fileFormatVersion: 2\nguid: 4232dbd3889ab6a4393e846291288fb0\nPackageManifestImporter:\n  externalObjects: {}\n  userData: \n"
  },
  {
    "path": "unity-project-with-correct-tests/.gitattributes",
    "chars": 3133,
    "preview": "* text=auto\n\n# Unity files\n*.meta -text merge=unityyamlmerge diff\n*.unity -text merge=unityyamlmerge diff\n*.asset -text "
  },
  {
    "path": "unity-project-with-correct-tests/.gitignore",
    "chars": 1098,
    "preview": "/[Ll]ibrary/\n/[Tt]emp/\n/[Oo]bj/\n/[Bb]uild/\n/[Bb]uilds/\n/[Ll]ogs/\n/[Uu]ser[Ss]ettings/\n\n# MemoryCaptures can get excessiv"
  },
  {
    "path": "unity-project-with-correct-tests/.vscode/settings.json",
    "chars": 1161,
    "preview": "{\n  \"files.exclude\": {\n    \"**/.DS_Store\": true,\n    \"**/.git\": true,\n    \"**/.gitmodules\": true,\n    \"**/*.booproj\": t"
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scenes/SampleScene.unity",
    "chars": 7046,
    "preview": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!29 &1\r\nOcclusionCullingSettings:\r\n  m_ObjectHideFlags: 0\r\n  serialized"
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scenes/SampleScene.unity.meta",
    "chars": 155,
    "preview": "fileFormatVersion: 2\nguid: 9fc0d4010bbf28b4594072e72b8655ab\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetB"
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scenes.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: d08bbd603c914964190713bd95689eb3\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scripts/BasicCounter.cs",
    "chars": 265,
    "preview": "using System;\n\npublic class BasicCounter\n{\n  public const int MaxCount = 10;\n\n  public BasicCounter(int count = 0)\n  {\n"
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scripts/BasicCounter.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: b3127635e04181a4f8b926030456b80b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scripts/MyScripts.asmdef",
    "chars": 284,
    "preview": "{\n    \"name\": \"MyScripts\",\n    \"references\": [],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsaf"
  },
  {
    "path": "unity-project-with-correct-tests/Assets/Scripts/MyScripts.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: a766bbe5cb4e1474f8242df5302fd869\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  }
]

// ... and 59 more files (download for full content)

About this extraction

This page contains the full source code of the game-ci/unity-test-runner GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 259 files (2.6 MB), approximately 707.9k tokens, and a symbol index with 1716 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!